Avertissement : Cet article a été traduit de l’anglais par un LLM. La précision n’est pas garantie. Vous pouvez lire l’article original en anglais.
Aujourd’hui, j’ai appris que chaque fois que vous émettez un certificat SSL pour un domaine, celui-ci est publiquement enregistré dans ce que l’on appelle les journaux de Certificate Transparency (CT).
Ce système a été créé par Google en 2013, à la suite de l’incident DigiNotar (et d’autres), où cette autorité de certification (CA) a été piratée et a fini par émettre un certain nombre de certificats frauduleux dans le but de permettre des attaques de type man-in-the-middle.
L’idée de Certificate Transparency (CT) est de permettre la surveillance et l’audit des autorités de certification en publiant tous les certificats émis dans des journaux publics en ajout uniquement (append-only). Ainsi, tout problème lié à une CA compromise peut être détecté rapidement et corrigé.
Ces journaux peuvent être consultés sur des plateformes telles que crt.sh. (Je connaissais déjà des plateformes comme Censys qui répertorient les certificats et les domaines, et je pensais naïvement qu’elles se contentaient de parcourir le web pour les obtenir 😅)
Des logiciels tels que Mozilla Firefox et Google Chrome refusent ensuite les certificats qui ne font pas partie des journaux CT, en utilisant le Signed Certificate Timestamp (SCT).
Typiquement, les autorités de certification contactent un fournisseur de journaux, reçoivent un SCT de celui-ci, puis intègrent cette signature dans le certificat, permettant aux logiciels de vérifier la signature par rapport à une liste de journaux CT de confiance, sans avoir besoin d’interroger les journaux au moment de la navigation.
Par exemple, pour mon nom de domaine, on peut interroger ces informations depuis le certificat comme suit.
$ echo | openssl s_client -connect ixonae.com:443 2>/dev/null | openssl x509 -noout -text | grep -A 20 "SCT"
CT Precertificate SCTs:
Signed Certificate Timestamp:
Version : v1 (0x0)
Log ID : 96:97:64:BF:55:58:97:AD:F7:43:87:68:37:08:42:77:
E9:F0:3A:D5:F6:A4:F3:36:6E:46:A4:3F:0F:CA:A9:C6
Timestamp : Feb 10 20:26:14.687 2026 GMT
Extensions: none
Signature : ecdsa-with-SHA256
30:46:02:21:00:DB:E7:79:00:09:79:4F:B3:D6:0B:BA:
0B:E9:3F:BF:AB:CF:DF:78:3E:D0:71:B0:F3:C7:48:26:
57:8B:8C:A1:91:02:21:00:DE:9B:CA:E5:25:48:DE:DA:
25:78:B9:98:96:47:A4:AD:FA:65:C5:9F:47:68:8E:BD:
1F:28:9C:85:BC:EF:FE:CC
Signed Certificate Timestamp:
Version : v1 (0x0)
Log ID : 49:9C:9B:69:DE:1D:7C:EC:FC:36:DE:CD:87:64:A6:B8:
5B:AF:0A:87:80:19:D1:55:52:FB:E9:EB:29:DD:F8:C3
Timestamp : Feb 10 20:26:14.652 2026 GMT
Extensions: none
Signature : ecdsa-with-SHA256
30:45:02:21:00:B9:D9:26:BC:F4:BA:6F:E5:20:5A:4A:Notez qu’il n’y a pas un seul journal, mais plusieurs. Généralement, seul un ensemble de journaux de confiance sera inclus dans les navigateurs via des programmes de journaux de confiance.
Ressources supplémentaires
- Introducing Certificate Transparency and Nimbus (Cloudflare)
- Certificate Transparency - How it Works (transparency.dev)
- List of Monitors (transparency.dev)
- RFC 6962 - Certificate Transparency