Quand les navigateurs vérifient un certificat SSL, ils ne regardent pas seulement le certificat lui-même. Ils valident une chaîne complète de confiance jusqu'à une autorité de certification racine.
Des chaînes incomplètes ou mal configurées causent des erreurs intermittentes difficiles à diagnostiquer. Ce guide explique le fonctionnement et les bonnes pratiques.
Qu'est-ce que la Chaîne de Certificats
Une chaîne de certificats (ou chaîne de confiance) est la séquence de certificats qui relie votre certificat serveur à une CA racine de confiance.
Les trois niveaux de la chaîne
- Certificat serveur (leaf) : émis pour votre domaine spécifique, c'est celui installé sur votre serveur
- Certificats intermédiaires : émis par la CA racine aux CAs intermédiaires qui émettent les certificats finaux
- Certificat racine : la CA racine intrinsèquement approuvée par les navigateurs et systèmes d'exploitation
Comment la validation fonctionne
Quand un navigateur se connecte à votre site :
- Il reçoit votre certificat serveur
- Il suit les liens d'émetteur vers les intermédiaires
- Il continue jusqu'à atteindre une racine reconnue
- Si un maillon est manquant, la validation échoue
Pourquoi la Validation de Chaîne Compte
Une configuration correcte de la chaîne est essentielle pour éviter des problèmes frustrants.
Erreurs intermittentes
Des chaînes incomplètes causent des erreurs sur certaines plateformes mais pas d'autres :
- Les navigateurs desktop peuvent compléter la chaîne via le caching
- Les appareils mobiles ou anciennes configurations échouent
- Ces problèmes sont difficiles à reproduire et diagnostiquer
Impacts sur les intégrations
- API automatisées : échouent plus strictement que les navigateurs
- Confiance utilisateurs : même si peu d'utilisateurs sont affectés, cela érode la confiance
- Changements de CA : des modifications d'intermédiaires peuvent soudainement casser des configurations
Comment la Validation de Chaîne Fonctionne
Lors d'une connexion TLS, plusieurs vérifications sont effectuées sur chaque certificat de la chaîne.
Étapes de validation
- Vérification de signature : chaque certificat est signé par la clé de son émetteur
- Périodes de validité : tous les certificats doivent être dans leur plage de dates valide
- Statut de révocation : vérification via OCSP ou CRL
- Extensions et contraintes : vérification des usages autorisés
- Racine de confiance : la chaîne doit se terminer par une racine connue
Exemple de vérification
# Afficher la chaîne complète
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null
# Vérifier la chaîne de certificats
openssl s_client -connect example.com:443 -showcerts
Différences entre clients
Les clients implémentent différentes stratégies de fallback :
- Certains navigateurs téléchargent les intermédiaires manquants via AIA
- Les clients non-navigateurs (curl, bibliothèques) échouent strictement
- Les serveurs doivent envoyer les chaînes complètes plutôt que de compter sur les clients
Bonnes Pratiques de Configuration
Assurez une configuration correcte de la chaîne avec ces recommandations.
Configuration du serveur
- Incluez tous les intermédiaires : ne supposez jamais que les clients peuvent les obtenir
- Ordonnez correctement : certificat serveur en premier, puis intermédiaires dans l'ordre
- Racine optionnelle : les clients l'ont déjà mais son inclusion ne pose pas de problème
Configuration Nginx
ssl_certificate /etc/ssl/certs/example.com.fullchain.pem;
ssl_certificate_key /etc/ssl/private/example.com.key;
Configuration Apache
SSLCertificateFile /etc/ssl/certs/example.com.crt
SSLCertificateKeyFile /etc/ssl/private/example.com.key
SSLCertificateChainFile /etc/ssl/certs/chain.pem
Tests et validation
Testez votre configuration depuis plusieurs environnements :
# Test avec curl (strict)
curl -v https://example.com 2>&1 | grep -i "SSL certificate"
# Test avec openssl
openssl s_client -connect example.com:443 -verify_return_error
Maintenance continue
- Surveillez les annonces d'intermédiaires de votre CA
- Lors des renouvellements, vérifiez si les intermédiaires ont changé
- Automatisez les tests de chaîne dans vos pipelines de déploiement
Conclusion
La validation de la chaîne de certificats est un aspect fondamental de la sécurité TLS. Des chaînes incomplètes ou mal ordonnées causent des problèmes intermittents qui érodent la confiance.
En comprenant le fonctionnement et en suivant les bonnes pratiques de configuration, vous assurez que vos certificats fonctionnent de manière fiable sur toutes les plateformes.