ISRG celebrates 10 years of helping build a brighter Internet →

Journaux de transparence des certificats (TC)

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

Note : La version anglaise a été mise à jour depuis sa traduction () Voir en anglais

La Transparence des Certificats (TC) est un système pour enregistrer et surveiller l'émission de certificats TLS. TC améliore grandement la capacité de tous à surveiller et étudier l'émission de certificats, et ces capacités ont permis de nombreuses améliorations à l'écosystème AC et la sécurité du Web. En conséquence, TC est rapidement devenu une infrastructure critique.

Let's Encrypt soumet tous les certificats que nous délivrons aux journaux TC. Nous utilisons également deux journaux TC partagés annuellement nommés Oak et Testflume. Toutes les autorités de certification de confiance publique sont les bienvenues pour participer à nos journaux. De nombreux certificats racine d'autorité de certification ont déjà été inclus dans nos journaux TC. Contactez-nous par email pour ajouter de nouveaux certificats racines dans nos journaux si les votre n'y sont pas.

Inscrivez-vous pour recevoir des notifications dans la catégorie d'annonces TC sur notre forum communautaire pour voir les annonces majeures concernant nos journaux TC.

Financement

Nous voulons remercier les partenaires suivants pour leur généreuse contribution au journal TC de Let's Encrypt. Si votre organisation souhaite nous aider à continuer ce travail, veuillez considérer le sponsoring ou une donation.

Sectigo

Architecture

Rendez-vous sur notre blog pour voir Comment Fonctionne les Journaux TC de Let's Encrypt !

Surveillance du journal

Let's Encrypt a créé un outil open-source de surveillance du journal TC appelé CT Woodpecker. Nous utilisons cet outil pour monitorer la stabilité et la conformité de nos propres journaux, et nous espérons que d'autres y trouveront également une utilité.

Journaux TC

Production

Test


Opérations de journalisation

Pour énumérer les racines incluses pour un Certificate Transparency Log 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 Certificate Transparency Log est généralement traitée par les autorités de certification. Si vous souhaitez en faire l'expérience, commencez par récupérer un certificat arbitraire codé 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 puisse être soumis, il doit être encodé en JSON dans une structure spéciale. Vous pouvez utiliser le générateur JSON fourni par https://crt.sh/gen-add-chain pour effectuer cette tâche. L'utilitaire crt.sh retournera un paquet JSON. Téléchargez le paquet sur votre ordinateur, renommez le fichier si nécessaire, et lancez la commande suivante pour effectuer l'opération d'ajout de chaîne (RFC 6962 section 4.1) pour soumettre le certificat à un Certificate Transparency Log. La sortie contiendra une signature qui est en fait une SCT. Plus d'informations sur la signature dans un instant.

$ 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 Certificate Transparency Log a été signé par le bloc Oak 2020, nous utilisons le champ id de la commande ci-dessus et nous le passons à la commande suivante. Le résultat de cette opération produira le Log ID du Certificate Transparency Log.

$ 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 de signature, nous pouvons vérifier que le certificat a été soumis à un journal. En utilisant notre guide SCT, vous pourriez décoder davantage 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