Certificats et PKI
Comment on fait confiance à une clé publique : certificats X.509, autorités de certification, chaîne de confiance, révocation et Certificate Transparency.
Elouan
Série Cryptographie appliquée · article 3 sur 3
L’article précédent laissait une question ouverte : quand un serveur me présente sa clé publique, comment savoir qu’elle est vraiment la sienne, et pas celle d’un attaquant placé au milieu ? La réponse d’Internet, c’est le certificat et la PKI (infrastructure à clés publiques) : un système de tiers de confiance qui se portent garants des clés.
Le certificat : une carte d’identité signée
Un certificat X.509 est un document qui dit, en substance : « cette clé publique appartient à www.exemple.fr », signé par une autorité de certification (AC) à laquelle on fait confiance.
Ce qu’il contient :
| Champ | Contenu |
|---|---|
| Sujet | L’identité du titulaire |
| Subject Alternative Name (SAN) | Les noms couverts : exemple.fr, www.exemple.fr, *.exemple.fr… |
| Clé publique | La clé du titulaire |
| Émetteur | L’AC qui a signé |
| Validité | Date de début et de fin |
| Usages | Authentification serveur, client, signature de code… |
| Signature | La signature de l’AC sur tout ce qui précède |
Certificat public, clé privée secrète
Le certificat est public : le serveur l’envoie à chaque connexion. La clé privée associée reste sur le serveur et n’en sort jamais. C’est elle qui permet au serveur de prouver, pendant la poignée de main TLS, qu’il est bien le titulaire du certificat.
# Afficher le certificat d'un site
openssl s_client -connect www.exemple.fr:443 -servername www.exemple.fr </dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates -ext subjectAltName
La chaîne de confiance
Les AC ne signent pas directement les certificats des sites avec leur clé la plus précieuse. Elles utilisent une chaîne :
AC racine (auto-signée, préinstallée dans le système ou le navigateur, gardée hors ligne)
└── AC intermédiaire (signée par la racine, signe au quotidien)
└── Certificat du serveur (www.exemple.fr)
Quand un navigateur reçoit un certificat, il vérifie :
- que chaque maillon est signé par le maillon du dessus, jusqu’à une racine de confiance ;
- que chaque certificat est dans sa période de validité ;
- que le nom demandé figure dans le champ SAN ;
- que les usages sont corrects ;
- que le certificat n’est pas révoqué.
Si une seule vérification échoue, il affiche une alerte.
Une racine de confiance, c’est un pouvoir énorme
Toute AC racine présente sur un poste peut signer un certificat pour n’importe quel site, que le poste acceptera sans alerte. Installer une nouvelle racine sur un poste, c’est permettre l’interception de tout son trafic chiffré. C’est volontaire dans le cas d’un proxy d’inspection d’entreprise, et c’est une technique d’attaque quand ça ne l’est pas (T1553.004 dans MITRE ATT&CK).
DV, OV, EV
| Niveau | Ce que l’AC vérifie | Exemple |
|---|---|---|
| DV (Domain Validation) | Que le demandeur contrôle le domaine (fichier sur le site, enregistrement DNS) | Let’s Encrypt, en quelques secondes |
| OV (Organization Validation) | En plus, l’existence de l’organisation | Certificats d’entreprise |
| EV (Extended Validation) | Vérifications juridiques poussées | Les navigateurs ne l’affichent plus de façon particulière |
Un certificat valide ne prouve pas l’honnêteté
La très grande majorité des certificats sont DV. Ils prouvent seulement que le demandeur contrôlait le domaine. Un site de phishing en connexion-banque-exemple.com peut avoir un certificat parfaitement valide.
La révocation
Si une clé privée fuit, il faut révoquer le certificat avant sa date d’expiration.
| Mécanisme | Principe | Limite |
|---|---|---|
| CRL | L’AC publie la liste des certificats révoqués | Listes parfois énormes, mises à jour périodiques |
| OCSP | Le client interroge l’AC en temps réel | Problèmes de vie privée et de disponibilité |
| OCSP stapling | Le serveur joint lui-même une réponse OCSP récente | Doit être activé sur le serveur |
En pratique, la révocation fonctionne mal sur le web, ce qui explique la tendance aux certificats de courte durée : Let’s Encrypt délivre des certificats de 90 jours, et l’industrie s’est engagée à réduire progressivement la durée maximale des certificats publics.
Certificate Transparency
Depuis plusieurs années, les AC publiques doivent inscrire chaque certificat émis dans des journaux publics, en ajout seul : c’est Certificate Transparency (CT). Les navigateurs refusent les certificats qui n’y figurent pas.
Pour un défenseur, c’est une source précieuse :
- surveiller les certificats émis pour son propre domaine (un certificat inattendu peut signaler une erreur ou une attaque) ;
- découvrir des sous-domaines oubliés ;
- repérer des domaines qui imitent le sien, souvent préparés pour du phishing.
On interroge ces journaux, par exemple, sur crt.sh.
Les certificats auto-signés
Un certificat auto-signé est signé par sa propre clé, sans AC. Aucun navigateur ne lui fait confiance par défaut. On en trouve sur les interfaces d’administration d’équipements internes… et sur les serveurs de commande de nombreux malwares. Dans une analyse réseau, un certificat auto-signé avec des champs vides ou par défaut, vers une IP inconnue, est un indice à creuser.
La PKI d’entreprise
Beaucoup d’entreprises ont leur propre PKI, souvent ADCS (Active Directory Certificate Services) dans les environnements Windows. Elle délivre des certificats pour les serveurs internes, l’authentification des machines (802.1X, VPN), la connexion par carte à puce, ou la signature de documents.
Une PKI interne fait partie des systèmes les plus sensibles (niveau 0 dans le modèle de cloisonnement, voir la série Active Directory) : un certificat d’authentification délivré à tort peut permettre de s’authentifier comme un autre utilisateur, jusqu’à l’administrateur du domaine. Des modèles de certificats trop permissifs sont une cause connue de compromission de domaines, et l’audit de la configuration d’ADCS fait désormais partie des vérifications courantes.
L'essentiel
- Un certificat X.509 associe une clé publique à une identité (un nom de domaine, une personne, une machine), et il est signé par une autorité de certification (AC).
- Chaîne de confiance : certificat du serveur → AC intermédiaire → AC racine. Les racines sont préinstallées dans le système ou le navigateur.
- Un navigateur vérifie : la signature de chaque maillon, la période de validité, que le nom demandé figure dans le champ SAN, et que le certificat n'est pas révoqué.
- Validation DV (domaine), OV (organisation), EV (validation étendue). Un certificat DV prouve seulement le contrôle du domaine.
- Révocation : listes CRL ou OCSP. Certificate Transparency : tout certificat public est inscrit dans des journaux publics consultables (crt.sh).
- Une PKI interne (par exemple ADCS dans un domaine Windows) délivre des certificats pour l'entreprise. Mal configurée, elle peut devenir un chemin vers la compromission du domaine.
- La clé privée ne quitte jamais son propriétaire. Le certificat, lui, est public.
Idées reçues
Un certificat valide prouve-t-il que le site est légitime ?
L'erreur courante. Répondre oui.
En réalité. Un certificat DV prouve seulement que le demandeur contrôle le nom de domaine au moment de la demande. Un domaine de phishing peut obtenir un certificat valide gratuitement. Le certificat garantit qu'on parle bien au domaine affiché, pas que ce domaine est honnête.
Quelle différence entre la clé privée et le certificat ?
L'erreur courante. Les confondre, ou penser que le certificat est secret.
En réalité. Le certificat est public : il contient la clé publique, l'identité et la signature de l'autorité. Le serveur l'envoie à chaque connexion. La clé privée, elle, reste sur le serveur et ne doit jamais en sortir. Si elle fuit, il faut révoquer le certificat et en générer un nouveau avec une nouvelle paire de clés.
Pourquoi les entreprises qui inspectent le trafic HTTPS déploient-elles leur propre AC sur les postes ?
L'erreur courante. Dire que c'est pour signer leurs sites internes uniquement.
En réalité. Pour l'interception TLS : le proxy génère à la volée un certificat pour chaque site visité, signé par l'AC interne. Comme cette AC est installée comme racine de confiance sur les postes, le navigateur l'accepte sans alerte. C'est aussi pour ça que l'ajout d'une AC racine inconnue sur un poste est un événement sensible : il permet d'intercepter tout son trafic chiffré.
À quoi sert Certificate Transparency pour un défenseur ?
L'erreur courante. Ne pas connaître le mécanisme.
En réalité. Toutes les AC publiques doivent inscrire les certificats qu'elles émettent dans des journaux publics. On peut donc surveiller (par exemple sur crt.sh) les certificats émis pour son propre domaine ou pour des noms qui lui ressemblent, et repérer des sous-domaines oubliés ou des domaines de phishing en préparation.
Tester ses connaissances
Références
- Bulletproof TLS and PKI (2e éd.)Ivan Ristić · Feisty Duck
- Serious Cryptography (2e éd.)Jean-Philippe Aumasson · No Starch Press