Hello Susan,
I’m responding here but it also applies to Aaron’s e-mail and the certificate you linked to.
When a certificate is issued, a pre-certificate is created, and the CA obtains 2 or more SCTs to include inside. How they select which two is up to the various practices, such as the code that Aaron walked you through before.
After these two or more SCTs are obtained, they are included in the certificate, which is only then issued, and given to the client.
If there is a valid pre-certificate or certificate, anyone can take this later and submit it to any log. There are two anonymous endpoints in all CT logs, specified in the CT RFC, where any entity can submit a valid pre-certificate or a valid certificate, and it will receive an inclusion proof.
crt.sh is following a lot of logs, and will find a certificate multiple times. If it finds it in logs, it will add it in the section at the top ("Log entries for this certificate:”) but it does not mean that this pre-certificate’s corresponding certificate contains SCTs from these logs.
With curl you can try yourself to submit an existing certificate (e.g. from
example.com) to all CT logs, including ones outside the list, and then after 24 hours or so, you’ll see them appear at that section of crt.sh even much later, after the certificate is issued.
CAs choose usually from the intersection of Chrome and Apple because they need their certificates trusted by Chrome and Apple, and this is the smallest number of SCTs they can include. In theory, they could include multiple SCTs, or even have a certificate with an SCT from every log, but this is not necessary, it increases the size of the final file, and therefore it’s not being done.
You can see the pre certificate is included in many logs:
But the certificate only has 2 SCTs:
Let's Encrypt Oak 2020
Google Xenon 2020
And crt.sh only found this to be included (the certificate, not the pre-certificate) in 2:
I hope this helps.
Antonis