Surveiller Certificate Transparency pour son propre domaine
Chaque certificat public est inscrit dans un journal public : comment retrouver ses sous-domaines oubliés, repérer une émission imprévue et voir venir l’expiration.
Depuis 2018, les navigateurs exigent que chaque certificat reconnu publiquement soit inscrit dans au moins deux journaux publics, où l’on ne peut qu’ajouter, avant de l’accepter. Le système s’appelle Certificate Transparency, et il existe pour qu’un certificat émis par erreur ou par fraude puisse être remarqué. Effet secondaire : un historique complet, public et consultable de chaque nom d’hôte qui a eu un certificat, pour chaque domaine, y compris le vôtre.
Cet historique est la donnée gratuite la plus utile de la sécurité vue de l’extérieur. Perimetry le lit à chaque audit. Ce guide explique ce qu’il révèle et comment le rapport s’en sert.
Trois choses que les journaux vous disent
1. Chaque sous-domaine que vous avez un jour exposé
Tout nom d’hôte qui a reçu un certificat figure dans les journaux, qu’il existe encore ou non : staging.votredomaine.fr, ancien-crm.votredomaine.fr, test-2019.votredomaine.fr. Les serveurs de développement reçoivent automatiquement des certificats Let’s Encrypt et sont oubliés un mois plus tard ; l’entrée du journal reste pour toujours. Cette liste est le point de départ du contrôle de prise de contrôle de sous-domaine et de la recherche des hôtes que plus personne ne se souvient de faire tourner.
Les certificats génériques (*.votredomaine.fr) cachent les noms individuels aux journaux, ce qu’on présente parfois comme une raison de confidentialité de les utiliser. En contrepartie, la clé privée d’un certificat générique, si elle est volée, fonctionne pour tous les sous-domaines.
2. Qui a émis des certificats pour vos noms, et quand
Chaque entrée nomme l’autorité de certification et la date. Un domaine servi par Let’s Encrypt qui affiche soudain un certificat d’une autre autorité mérite une question : un collègue a-t-il mis en place un nouveau service, un hébergeur a-t-il changé d’autorité, ou quelqu’un d’autre a-t-il obtenu un certificat pour un nom sous votre domaine ? C’est en général par ce dernier cas qu’une prise de contrôle de sous-domaine ou un détournement DNS devient visible : l’attaquant a besoin d’un certificat pour servir du HTTPS, et le certificat est public en quelques minutes.
Perimetry compare chaque émetteur à votre enregistrement CAA (voir DNSSEC et CAA) et signale une émission par une autorité que l’enregistrement n’autorise pas.
3. Quand les certificats expirent
Les journaux indiquent la période de validité. Pour les hôtes auxquels l’audit se connecte réellement, Perimetry lit plutôt le certificat en service, ce qui est plus fiable, et signale une expiration dans les 30 jours en gravité élevée, et une expiration dans les 7 jours ou déjà passée en gravité critique. Pour les hôtes qui ne répondent plus, le certificat journalisé dit encore ce qu’il y avait.
La partie « changements »
La valeur des journaux est dans la différence entre deux lectures. Le rapport hebdomadaire liste, sous Depuis le dernier audit :
- les noms d’hôte qui apparaissent pour la première fois dans les journaux (nouveaux sous-domaines),
- les noms d’hôte qui ne se résolvent plus (sous-domaines disparus, enregistrements à nettoyer),
- les certificats émis depuis l’audit précédent, avec leur émetteur et les noms qu’ils couvrent,
- les renouvellements de certificats existants, normaux et listés brièvement.
Un nouveau certificat pour un nom que vous ne reconnaissez pas, par une autorité que vous n’utilisez pas, est la ligne la plus utile qu’un rapport puisse contenir ; c’est pourquoi Perimetry traite les nouveaux certificats comme des changements au lieu de les enfouir dans une liste.
Le faire à la main
Deux services publics indexent les journaux et se consultent sans compte :
- crt.sh, géré par Sectigo, accepte un domaine et renvoie toutes les entrées correspondantes, avec une recherche par
%.votredomaine.frpour tous les sous-domaines. - Cert Spotter, de SSLMate, propose une API JSON et un service d’alerte payant.
Ce sont les deux sources que Perimetry interroge. La recherche à la main suffit pour un inventaire ponctuel ; c’est la comparaison de chaque semaine qui justifie un service.
Que faire de ce que vous trouvez
- Hôte oublié qui répond encore : décidez s’il doit exister. Sinon, supprimez son enregistrement DNS et arrêtez ce qui répond.
- Hôte oublié qui ne répond plus : rien à faire aujourd’hui ; vérifiez qu’aucun CNAME ou NS orphelin ne traîne (le contrôle de prise de contrôle le couvre).
- Émetteur inattendu : trouvez qui l’a demandé. Si personne ne l’a fait, traitez-le comme un incident : vérifiez les enregistrements DNS du nom figurant sur le certificat, vérifiez votre compte chez le bureau d’enregistrement, et demandez à l’autorité de révoquer le certificat ; les autorités doivent répondre aux demandes de révocation du propriétaire du domaine.
- Expiration dans les 30 jours : vérifiez que le renouvellement automatique fonctionne. Un certificat non renouvelé à 30 jours de l’échéance signifie en général que la tâche de renouvellement est cassée.
À quoi ressemble le rapport
Le certificat expire dans 9 jours : shop.votredomaine.fr — élevée Émis par Let’s Encrypt le 3 août, valable jusqu’au 12 novembre. Les certificats Let’s Encrypt se renouvellent normalement 30 jours avant l’échéance ; la tâche de renouvellement semble arrêtée.
Nouveau certificat d’un émetteur absent de votre CAA — moyenne Un certificat pour
fichiers.votredomaine.fra été journalisé le 29 octobre, émis par une autorité que votre enregistrement CAA (issue "letsencrypt.org") n’autorise pas. Soit l’enregistrement est incomplet, soit le certificat n’a pas été demandé par vous.
Certificate Transparency a été conçu pour que les autorités de certification restent honnêtes. Lu chaque semaine pour un domaine, il garde aussi une entreprise honnête sur ce qu’elle fait encore tourner.