La revocation de certificat est le processus d’invalidation d’un certificat SSL avant sa date d’expiration — generalement parce que la cle privee a ete compromise, le certificat a ete mal emis ou la propriete du domaine a change.
En theorie, la revocation est la facon dont le systeme CA gere les urgences. En pratique, c’est le maillon le plus faible de l’infrastructure PKI. Voici pourquoi, et ce qui la remplace.
Quand revoquer un certificat
- Cle privee compromise — divulguee, volee ou exposee (par ex., commitee dans un depot Git public)
- Certificat mal emis — la CA a emis un certificat pour un domaine que vous ne controlez pas
- Domaine vendu — vous ne possedez plus le domaine que le certificat couvre
- Changement de cle — vous effectuez une rotation des cles et souhaitez invalider l’ancien certificat
- Serveur decommissionne — le certificat ne devrait plus etre valide
Comment fonctionne la revocation
CRL (Certificate Revocation List)
Le mecanisme de revocation originel. La CA publie une liste de tous les numeros de serie des certificats revoques. Les navigateurs telechargent la liste et la verifient.
Problemes :
- Les CRL deviennent volumineuses avec le temps (des millions d’entrees)
- Les navigateurs doivent telecharger la liste entiere avant de verifier un certificat
- Lent et gourmand en bande passante — la plupart des navigateurs ont arrete de verifier les CRL il y a des annees
OCSP (Online Certificate Status Protocol)
Une verification en temps reel. Au lieu de telecharger une liste, le navigateur demande au serveur OCSP de la CA : “Ce certificat est-il revoque ?”
Fonctionnement :
Navigateur → OCSP Responder : "Le certificat n° #12345 est-il encore valide ?"
OCSP Responder → Navigateur : "Bon" / "Revoque" / "Inconnu"
Problemes :
- Vie privee — la CA sait quels sites vous visitez (elle voit chaque requete OCSP)
- Latence — ajoute un aller-retour reseau a chaque nouvelle connexion HTTPS
- Disponibilite — si le repondeur OCSP est hors service, les navigateurs effectuent generalement un soft-fail (acceptent le certificat quand meme), rendant la revocation inefficace
OCSP Stapling (l’amelioration)
Le serveur recupere la reponse OCSP periodiquement et l‘“agrafe” au handshake TLS. Le navigateur obtient le statut de revocation sans contacter la CA.
Avantages :
- Pas de fuite de vie privee (le navigateur ne contacte pas la CA)
- Pas de latence supplementaire (la reponse est incluse dans le handshake)
- Fonctionne meme si le serveur OCSP de la CA est lent ou hors service
Configuration :
Nginx :
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
Apache :
SSLUseStapling on
SSLStaplingCache "shmcb:/var/run/apache2/ssl_stapling(128000)"
CRLite (le futur)
CRLite de Mozilla compresse toutes les revocations connues dans un filtre compact (~1,5 Mo) qui est livre avec les mises a jour de Firefox. Le navigateur peut verifier le statut de revocation localement — pas de requete reseau, pas de fuite de vie privee, pas de latence. En 2026, CRLite est active dans Firefox et pourrait etre adopte par d’autres navigateurs.
La dure realite de la revocation
La revocation est en grande partie defaillante en pratique :
- Chrome ne verifie ni OCSP ni CRL par defaut (s’appuie sur ses propres CRLSets — un sous-ensemble organise)
- Safari verifie OCSP mais effectue un soft-fail (accepte les certificats si le serveur OCSP est injoignable)
- Firefox utilise CRLite (la meilleure approche, mais uniquement sous Firefox)
- Le soft-fail OCSP signifie qu’un attaquant determine peut bloquer la verification OCSP et le navigateur acceptera un certificat revoque
C’est pourquoi l’industrie s’oriente vers les certificats a courte duree de vie comme defense principale :
| Approche | Comment elle protege |
|---|---|
| Revocation (OCSP/CRL) | Invalider un certificat compromis — mais la verification est peu fiable |
| Courte validite (90 jours → 47 jours) | Le certificat compromis expire rapidement — aucune verification necessaire |
Si un certificat n’est valide que 47 jours, une cle volee n’est utile que 47 jours au maximum. Cela limite les degats meme lorsque la revocation ne fonctionne pas.
Comment revoquer un certificat Let’s Encrypt
Si votre cle privee est compromise :
# Avec Certbot
sudo certbot revoke --cert-path /etc/letsencrypt/live/yourdomain.com/cert.pem --reason keycompromise
# Avec acme.sh
acme.sh --revoke -d yourdomain.com
Apres la revocation, obtenez un nouveau certificat immediatement — la revocation ne resout pas le probleme, elle invalide simplement l’ancien certificat. Utilisez GetHTTPS pour emettre un certificat neuf avec une nouvelle paire de cles.
Questions frequemment posees
Dois-je activer OCSP Stapling ?
Oui. Cela ne garantit pas la verification de revocation (les navigateurs peuvent l’ignorer), mais c’est un avantage net : handshake TLS plus rapide (pas de recherche OCSP cote client), meilleure vie privee (le navigateur ne contacte pas la CA) et certains navigateurs respectent les reponses OCSP agrafees. L’activation est gratuite — Nginx et Apache le supportent avec 2-3 lignes de configuration.
A quelle vitesse la revocation prend-elle effet ?
Les CRL sont publiees periodiquement (heures a jours). Les reponses OCSP sont mises en cache (typiquement 1-4 heures). En pratique, un certificat revoque peut rester “valide” pour certains navigateurs pendant 24 heures. C’est une raison supplementaire pour laquelle les certificats a courte duree de vie remplacent la revocation comme defense principale.
Dois-je revoquer lors du renouvellement ?
Non. Obtenir un nouveau certificat ne necessite pas la revocation de l’ancien. L’ancien certificat expire simplement. La revocation n’est necessaire que si la cle privee est compromise — pas pour un renouvellement de routine.
Puis-je verifier si un certificat a ete revoque ?
# Verifier le statut OCSP
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -status 2>/dev/null | grep "OCSP Response Status"
# "successful" = OCSP stapling fonctionne
# Si vide, le stapling n'est pas active
Ou verifiez sur crt.sh — les certificats revoques sont marques dans l’interface.