Journaux de transparence des certificats

Dernière mise à jour : | Voir toute la documentation

La transparence des certificats (CT) (en anglais CT pour Certificate Transparency) est un système permettant de journaliser et de monitorer l'émission de certficats TLS. CT améliore grandement la capacité de chacun à monitorer et étudier l'émission de certificats, et ces capacités ont menées à de nombreuses améliorations de l'écosystème des autorités de certification et de la sécurité du Web.En conséquence, la transparence des certificats devient rapidement une infrastructure critique.

Let's Encrypt soumet tous les certificats que nous émettons aux journaux de CT. Nous exploitons également deux journaux de CT scannés annuellement, nommés Oak et Testflume. Toutes les autorités de certification publiquement reconnues comme de confiance sont invitées à soumettre leurs certificats à nos journaux. De nombreuses autorités de certification racines ont déjà été incluses dans nos journaux de transparence des certificats.Contactez nous par courriel à propos de l'ajout de nouveaux certificats racine à nos journaux si le vôtre n'a pas été inclus.

Inscrivez vous pour recevoir les notifications de la rubrique CT announcements category du forum communautaire pour être informé des principales annonces au sujet de nos journaux de transparence des certificats.

Financement

Nous remercions les partenaires suivants pour leur généreux parrainage du journal de transparence des certificats de Let's Encrypt. Si votre organisation souhaite nous aider à poursuivre ce travail, n'hésitez pas à nous parrainer ou faire un don.

Sectigo

Architecture

Consultez notre blog pour voir Comment comment Let's Encrypt met en oeuvre les journaux de transparence des certificats!

Surveillance des journaux

Let's Encrypt a créé un outil de surveillance des journaux de transparence des certificats open source appelé CT Woodpecker. Nous utilisons cet outil pour surveiller la stabilité et la conformité de nos propres journaux, et nous espérons que d'autres le trouveront également utile.

CT Logs

Production

Testing


Log Operations

Pour énumérer les racines incluses dans un journal de CT particulier, vous pouvez exécuter la commande suivante dans le terminal de votre choix:

$ for i in $(curl -s https://oak.ct.letsencrypt.org/2020/ct/v1/get-roots | jq -r '.certificates[]'); do
    echo '------'; base64 -d <<< "${i}" | openssl x509 -inform der -noout -issuer -serial
done

La soumission de certificats à un journal de CT est généralement gérée par les autorités de certification. Si vous souhaitez expérimenter cela, commencez par récupérer un certificat quelconque au format PEM sur notre site Web préféré. Copiez et collez le bloc suivant dans votre terminal.

$ echo | \
openssl s_client \
    -connect "letsencrypt.org":443 \
    -servername "letsencrypt.org" \
    -verify_hostname "letsencrypt.org" 2>/dev/null | \
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > example.crt

Avant qu'un certificat ne puisse être soumis, il doit encodé au format JSON avec une structure particulière. Vous pouvez utiliser le générateur JSON fournit par https://crt.sh/gen-add-chain pour réaliser cette action. L'utilitaire crt.sh retournera un paquet JSON. Téléchargez la paquet JSON sur votre ordinateur, renommez le fichier si besoin, et émettez la commande suivantepour réaliser l'opération add-chain (ajout de chaîne) (RFC 6962 section 4.1) pour envoyer le certificat au journal de TC. La sortie contiendraa une signature qui est en fait un SCT. Dans un instant, plus d'informations concernant la signature.

$ curl \
    -X POST \
   --data @example-json-bundle.json \
    -H "Content-Type: application/json" \
    -H "User-Agent: lets-encrypt-ct-log-example-1.0" \
   https://oak.ct.letsencrypt.org/2020/ct/v1/add-chain
{"sct_version":0,"id":"5xLysDd+GmL7jskMYYTx6ns3y1YdESZb8+DzS/JBVG4=","timestamp":1576689972016,"extensions":"","signature":"BAMARzBFAiEA4OmuTcft9Jq3XLtcdZz9XinXCvYEY1RdSQICXayMJ+0CIHuujkKBLmQz5Cl/VG6C354cP9gxW0dfgMWB+A2yHi+E"}

Pour confirmer que le journal de CT a été signé par un "fragment" de Oak 2020, nous utilisons le champ id de la commande ci-dessus et l'exécutons via la commande suivante. Le résultat de cela affichera l'ID de log du journal de CT.

$ base64 -d <<< "5xLysDd+GmL7jskMYYTx6ns3y1YdESZb8+DzS/JBVG4=" | xxd -p -c 64 | sed -e 's/../&:/g' -e 's/:$//' | tr '[:lower:]' '[:upper:]'
E7:12:F2:B0:37:7E:1A:62:FB:8E:C9:0C:61:84:F1:EA:7B:37:CB:56:1D:11:26:5B:F3:E0:F3:4B:F2:41:54:6E

En utilisant le champ signature, nous pouvons vérifier que le certificat a été soumis à un journal. En utilisant notreGuide SCT Deep Dive, vous pouvez davantage décoder cette valeur.

$ base64 -d <<< "BAMARzBFAiEA4OmuTcft9Jq3XLtcdZz9XinXCvYEY1RdSQICXayMJ+0CIHuujkKBLmQz5Cl/VG6C354cP9gxW0dfgMWB+A2yHi+E" | xxd -p -c 16 | sed -e 's/../&:/g' -e 's/:$//' | tr '[:lower:]' '[:upper:]'
04:03:00:47:30:45:02:21:00:E0:E9:AE:4D:C7:ED:F4
9A:B7:5C:BB:5C:75:9C:FD:5E:29:D7:0A:F6:04:63:54
5D:49:02:02:5D:AC:8C:27:ED:02:20:7B:AE:8E:42:81
2E:64:33:E4:29:7F:54:6E:82:DF:9E:1C:3F:D8:31:5B
47:5F:80:C5:81:F8:0D:B2:1E:2F:84