Recherche dans les journaux de certificats

Chaque fois qu’un certificat est émis pour l’un de vos noms d’hôte, il entre dans un registre public que chacun peut lire. Cette recherche lit ce registre pour un domaine, liste les noms qu’il expose et teste les plus récents dans le DNS.

Ou essayez wordpress.org, python.org

Un registre que chacun peut lire

Un certificat TLS est émis par une autorité de certification (AC) et un navigateur fait confiance à tout certificat signé par l’une des cent autorités environ de sa liste. Pendant des années, cela voulait dire qu’une seule autorité négligente ou compromise pouvait émettre un certificat valide pour le domaine de votre banque sans que personne s’en aperçoive.

Certificate Transparency (CT) comble cette lacune. Les autorités doivent soumettre chaque certificat à des journaux publics en ajout seul et depuis avril 2018 Chrome rejette les certificats sans preuve d’inscription. Safari applique la même règle. Les journaux sont exploités par des entreprises comme Google, Cloudflare, DigiCert, Sectigo et Let’s Encrypt et tout le monde peut les consulter.

Pour vous, cela joue dans les deux sens. Vous pouvez voir chaque certificat jamais émis pour votre domaine, y compris ceux que vous n’avez jamais demandés. Tous les autres aussi, avec chaque nom d’hôte écrit dans ces certificats.

Ce que la recherche fait du journal

Nous interrogeons crt.sh, un index public des journaux CT, pour le domaine enregistré et tout ce qui se trouve dessous. Les résultats sont gardés une heure. Ensuite nous les traitons ainsi :

  • Les certificats sont comptés une fois. Chaque émission apparaît deux fois dans les journaux, comme précertificat et comme certificat final. Les entrées de même émetteur et de même numéro de série sont fusionnées.
  • Les sous-domaines sont rassemblés à partir des noms de chaque certificat et triés selon la date de leur certificat le plus récent. Les jokers comme *.example.com sont listés à part.
  • Les 40 noms les plus récents sont résolus dans le DNS pour voir s’ils mènent encore quelque part.
  • Les émetteurs sont comptabilisés, au total et sur les 90 derniers jours, puis comparés à votre enregistrement CAA si vous en publiez un.

Quand un domaine a un très long historique, crt.sh n’en renvoie qu’une partie ou dépasse le délai. La page vous le signale et se rabat sur les certificats encore valides.

CNAME orphelins et prise de contrôle de sous-domaine

Disons que status.example.com était un CNAME vers example.herokuapp.com. Quelqu’un a supprimé l’application et oublié l’enregistrement DNS. L’alias pointe maintenant vers un nom libre à réclamer et quiconque crée une application de ce nom sur la même plateforme reçoit le trafic de votre sous-domaine. Il peut alors servir une page de connexion sous votre domaine et obtenir un certificat valide pour elle.

La colonne d’état montre ce que dit le DNS aujourd’hui.

Résolu
Le nom a une adresse. Rien à faire.
Cible disparue (rouge)
Un CNAME vers une plateforme connue pour laisser réutiliser des noms abandonnés, comme GitHub Pages, Heroku, Azure, Amazon S3, Netlify ou Shopify et la cible renvoie NXDOMAIN. À traiter comme urgent.
Cible disparue (ambre)
Même situation chez un service que nous ne reconnaissons pas.
Disparu / Aucune adresse
Le sous-domaine lui-même n’existe plus. C’est sans danger, même si son nom reste dans les journaux.

La réparation tient en une étape. Supprimez l’enregistrement CNAME, ou recréez la ressource sur la plateforme si vous avez encore besoin du sous-domaine. Et désormais, faites de « retirer l’enregistrement DNS » une partie de la fermeture de tout service hébergé.

Lire le tableau des émetteurs

La plupart des domaines montrent une ou deux autorités. Let’s Encrypt et Google Trust Services reviennent souvent parce que les hébergeurs et les CDN leur demandent des certificats automatiquement. Un émetteur est marqué Inhabituel dans deux cas. Soit il a émis dans les 90 derniers jours et il est absent de votre enregistrement CAA, soit vous n’avez pas d’enregistrement CAA et il compte pour deux certificats au plus sur un domaine qui en a dix ou plus.

Inhabituel ne veut pas dire hostile. Activer un CDN, un créateur de site ou un nouvel outil de pages d’atterrissage amène souvent une nouvelle autorité. Demandez à la personne qui gère ces services. Si personne ne peut expliquer le certificat, trouvez son numéro de série grâce au lien crt.sh du dernier tableau et demandez à cette autorité de le révoquer.

Pour restreindre qui peut émettre à partir de maintenant, publiez des enregistrements CAA qui ne nomment que les autorités que vous utilisez :

example.com.  CAA  0 issue "letsencrypt.org"
example.com.  CAA  0 issue "pki.goog"

Seuls 40 noms sont testés et seulement pour une cible CNAME manquante. Certaines plateformes peuvent être détournées même quand la cible répond encore et les noms d’hôte couverts par un joker n’apparaissent jamais dans les journaux. Un résultat propre ici n’est pas un audit complet de votre zone DNS.

Questions fréquentes

Puis-je retirer un sous-domaine des journaux Certificate Transparency ?

Non. Les journaux n’acceptent que des ajouts et ils sont conçus pour qu’une suppression se remarque. Partez du principe que tout nom d’hôte placé dans un certificat public est public pour toujours.

Comment trouver tous les sous-domaines d’un domaine ?

Les journaux CT sont la source publique la plus complète, car presque chaque nom d’hôte HTTPS a eu un certificat à un moment ou un autre. Ils manquent les noms qui n’ont jamais utilisé qu’un certificat joker et ceux qui n’ont jamais servi de HTTPS.

Pourquoi y a-t-il des centaines de certificats pour mon domaine ?

Les certificats automatiques durent 90 jours ou moins et sont renouvelés environ tous les 60 jours, par nom d’hôte et un CDN placé devant le site émet les siens en plus. Un site de cinq noms d’hôte peut produire plus de trente certificats par an.

Comment garder les noms d’hôte internes hors des journaux ?

Utilisez un certificat joker, qui n’inscrit que *.example.com, ou émettez les certificats internes depuis une autorité privée à laquelle vos propres appareils font confiance. Dans les certificats publics, évitez les noms parlants comme vpn-admin ou le nom d’un produit que vous n’avez pas lancé.

Un certificat dans les journaux veut-il dire que le site est en ligne ?

Non. Cela veut dire que quelqu’un a pu prouver qu’il contrôlait ce nom le jour de l’émission. La vérification DNS du tableau des sous-domaines vous dit si le nom mène encore quelque part.