Certificate Transparency: Surveillez TLS via crt.sh & CertStream

January 26, 2025

1. Contexte et enjeux

La sécurité des communications numériques ne se limite pas seulement à la navigation web. Même si l’on parle souvent de HTTPS – qui encapsule le protocole HTTP dans une couche TLS (Transport Layer Security) –, la TLS peut être utilisée pour bien d’autres protocoles : messagerie (IMAP, SMTP), transfert de fichiers (FTPS), VPN, etc.

Dans tous ces scénarios, les certificats TLS jouent un rôle primordial pour assurer l’authentification du serveur (ou du client) et le chiffrement des données échangées. Cependant, le système de confiance fondé sur ces certificats a déjà montré ses failles (certificats malveillants, erreurs d’émission, etc.). C’est ici qu’intervient la Certificate Transparency (CT), un mécanisme rendant publiques toutes les émissions de certificats afin de faciliter la détection d’anomalies.

2. Certificate Transparency : le principe

  1. Fondements

    • Les Autorités de Certification (CA) doivent consigner tout certificat émis dans des journaux publics append-only.
    • Une preuve d’enregistrement (SCT – Signed Certificate Timestamp) est nécessaire pour que les certificats soient considérés valides par les principaux navigateurs web (Chrome, Firefox, etc.).
  2. Pourquoi c’est crucial

    • Transparence universelle : Toute personne (ou machine) a la possibilité de vérifier les certificats émis pour un domaine donné, qu’il s’agisse d’un site web, d’un serveur de messagerie ou d’un autre service.
    • Détection rapide : Si un certificat est délivré de manière frauduleuse ou sans autorisation, il devient plus aisé de le repérer et de le révoquer avant qu’il ne cause des dégâts.
    • Amélioration du système de confiance : La CT rend le processus d’émission plus vérifiable, ce qui diminue les risques d’abus liés aux autorités de certification.
  3. HTTPS vs. TLS : une nuance importante

    • HTTPS : Protocole web sécurisant la navigation entre un serveur et un navigateur.
    • TLS : Protocole plus général, qui peut protéger de nombreux autres services (email, transfert de fichiers, etc.).
    • Les principes de Certificate Transparency s’appliquent tout particulièrement à l’écosystème HTTPS, mais le contrôle des certificats vaut aussi pour d’autres usages de TLS.

3. crt.sh : l’outil de référence

crt.sh, maintenu par Sectigo (ex-Comodo), s’impose comme un portail majeur d’accès aux journaux de Certificate Transparency :

  1. Interface Web

    • Recherche par nom de domaine : Entrez mondomaine.fr pour afficher l’historique de tous les certificats associés, qu’ils soient actifs ou expirés.
    • Informations détaillées : Numéro de série, émetteur, date d’émission/expiration, algorithme de chiffrement, etc.
  2. API non officielle

    • Permet d’automatiser la requête de la base de données.
    • Nécessite souvent des requêtes SQL adaptables en HTTP.
    • Avantage : Intégrer directement dans un pipeline CI/CD ou un script de supervision pour surveiller vos certificats en continu.
    • Limite : Puisqu’elle est non officielle, des changements soudains peuvent casser les scripts en production.
  3. Cas d’usage DevOps

    • Surveillance d’infrastructure : Vérifier la création de nouveaux certificats (par ex. sous-domains, environnements de test) et éviter des surprises ou des sous-domaines “fantômes”.
    • Cycle de vie Let’s Encrypt : S’assurer que les certificats générés par ACME sont bien enregistrés et qu’aucun certificat indésirable n’a été émis.
    • Audit de la concurrence : Surveiller les domaines de vos concurrents pour repérer l’apparition de nouveaux services (sous-domaines révélateurs de tests ou de futures offres).

4. CertStream : la surveillance en temps réel

Outre les recherches ponctuelles ou régulières sur crt.sh, vous pouvez automatiser une surveillance temps réel via CertStream :

  1. Qu’est-ce que CertStream ?

    • Un service offrant un flux en direct de tous les certificats ajoutés aux journaux de Certificate Transparency.
    • Agrège plusieurs sources, couvrant la plupart des CA (Let’s Encrypt, DigiCert, Sectigo, etc.).
  2. Comment ça marche ?

    • API WebSocket : Vous pouvez vous y connecter depuis un script ou un programme, et recevoir automatiquement chaque nouvel événement (certificat émis).
    • Filtrage : Surveillez spécifiquement les domaines ou expressions régulières qui vous intéressent (ex. *.mondomaine.fr), afin d’être alerté en quasi temps réel.
  3. Bénéfices

    • Réactivité : Identifier un certificat émis de manière abusive ou un sous-domaine non autorisé quelques instants après son apparition.
    • Complémentarité : Comparé à crt.sh où la requête est “pull” (vous interrogez le service), CertStream fonctionne en “push” (vous recevez immédiatement les infos).

5. Au-delà du web : TLS dans d’autres environnements

  1. Messagerie

    • Protocoles IMAP, POP, SMTP peuvent être protégés par TLS.
    • Les certificats émis pour ces services sont également enregistrés dans les journaux CT s’ils sont signés par une CA publique.
    • Le même principe de détection s’applique : un certificat SMTP frauduleux serait immédiatement repérable.
  2. VPN, FTP, etc.

    • TLS peut aussi chiffrer des connexions VPN (OpenVPN, par exemple) ou FTP (FTPS).
    • Qu’il s’agisse du web ou non, tant que vous utilisez un certificat public, il apparaîtra dans les logs CT.
    • Les risques de fraude existent aussi dans ce contexte, d’où l’intérêt de la Certificate Transparency.
  3. Let’s Encrypt et ACME

    • Même si Let’s Encrypt est très utilisé pour les sites web, il peut aussi fournir des certificats pour d’autres usages (comme un serveur IMAP, un reverse proxy SSL, etc.).
    • Tous ces certificats figureront de la même façon dans les journaux CT, avec la même transparence.

6. Cas pratiques : surveiller ses certificats et sa concurrence

  1. Détection de sous-domaines inconnus

    • En interrogeant régulièrement crt.sh ou via CertStream, vous pouvez découvrir rapidement des sous-domaines inattendus (par exemple, dev.mondomaine.fr).
    • Utile pour vérifier qu’aucun service n’a été créé en dehors des procédures internes.
  2. Analyse concurrentielle

    • Appliquez la même méthode aux domaines de vos concurrents.
    • Vous pourriez repérer un sous-domaine révélant un projet en cours, comme beta.concurrent.fr.
    • À manier avec discernement : la transparence vaut dans les deux sens, vos sous-domaines aussi sont visibles.
  3. Scripts et notifications

    • Via l’API non officielle de crt.sh, vous pouvez créer un cron job qui interroge la base toutes les heures, puis envoie un e-mail Slack/Teams si de nouveaux certificats sont détectés.
    • Avec CertStream, recevez des webhooks en temps réel, facilitant une réaction instantanée en cas de menace.

7. Limites, bonnes pratiques et optimisations

  1. Limites

    • Délai de propagation : Même avec CertStream, il peut y avoir quelques secondes ou minutes de décalage.
    • Faux positifs : Certains certificats émis pour des tests internes ou expirés peuvent apparaître. Vérifier avant de tirer la sonnette d’alarme.
    • API non officielle (crt.sh) : Peut changer sans préavis, nécessitant une maintenance régulière de vos scripts.
  2. Bonnes pratiques

    • Revue périodique : Mettre en place un processus de vérification (journalier ou hebdomadaire) pour votre domaine, vos sous-domaines et vos services non-web.
    • Politique de cycle de vie : Consolider les pratiques de renouvellement (via Let’s Encrypt ou un autre CA) et s’assurer que chaque certificat émis est connu et validé.
    • Sensibilisation : Informer vos équipes que toute émission de certificat TLS public (web, mail, VPN…) sera visible publiquement dans la CT.

Conclusion

La Certificate Transparency a marqué un tournant dans la gestion et la surveillance des certificats TLS. Qu’il s’agisse de sites web (HTTPS) ou de services divers (mail, VPN, FTP…), l’ensemble des certificats émis par des CA publics se retrouve dans des journaux consultables par tous.

Des outils comme crt.sh et CertStream permettent aux professionnels de la sécurité, aux DevOps et aux administrateurs système de :

Dans un contexte où la confiance et la sécurité sont indispensables, la CT contribue à la fiabilité de l’écosystème TLS bien au-delà de la seule sphère du web.

Pour completer je vous conseille de lire cette récente publication de l’ANSSI sur : Automatisation de la gestion des certificats avec ACME

FAQ

Q : Qu’est-ce que la Certificate Transparency (CT) ?
R : C’est un ensemble de journaux publics append-only où les CA publient les certificats qu’ils émettent. Cela facilite la détection d’anomalies ou de fraudes.

Q : À quoi sert CertStream ?
R : CertStream fournit un flux en temps réel des nouveaux certificats ajoutés aux journaux CT. Il permet de réagir très rapidement à l’émission d’un certificat suspect.

Q : TLS est-il uniquement pour le web ?
R : Non. TLS peut aussi sécuriser des protocoles comme SMTP, IMAP, FTPS, VPN, etc. Dès lors qu’un certificat public est émis, il peut apparaître dans les logs CT.

comments powered by Disqus