Chaîne de Certificat SSL Incomplète
Diagnostiquez et corrigez les certificats intermédiaires manquants.
Une chaîne de certificat incomplète est l'une des erreurs SSL les plus sournoises. Votre site peut fonctionner parfaitement dans certains navigateurs (qui téléchargent les certificats manquants) et afficher des erreurs dans d'autres (qui ne le font pas). Les appareils mobiles et les clients API sont particulièrement sensibles à ce problème.
La chaîne de certificats relie votre certificat à une autorité de certification racine (CA root) de confiance. Si un certificat intermédiaire manque, le navigateur ne peut pas établir cette confiance et affiche une erreur, même si votre certificat est parfaitement valide.
Ce guide explique comment fonctionne la chaîne de certificats, comment diagnostiquer une chaîne incomplète, et comment corriger le problème définitivement sur votre serveur.
Symptômes d'une Chaîne Incomplète
Comment identifier ce problème :
- Erreur sur mobile uniquement : le site fonctionne sur desktop mais affiche une erreur SSL sur smartphone. Les mobiles sont plus stricts sur la chaîne.
- Erreur dans les API/scripts : curl ou wget échouent avec "unable to get local issuer certificate" alors que le navigateur fonctionne.
- SSL Labs note "Chain issues" : l'outil SSL Labs signale explicitement que des certificats intermédiaires sont manquants.
- Erreurs intermittentes : certains navigateurs compensent en téléchargeant les certificats manquants (AIA fetching), d'autres non.
Causes de la Chaîne Incomplète
Pourquoi les intermédiaires sont manquants :
- Installation partielle : seul le certificat final a été installé, sans les certificats intermédiaires fournis par la CA.
- Ordre incorrect : les certificats sont présents mais dans le mauvais ordre. Le certificat du serveur doit être premier.
- Certificats obsolètes : l'intermédiaire utilisé a été remplacé par une nouvelle version et n'est plus reconnu.
- Configuration serveur : le serveur web pointe vers le mauvais fichier de certificat (certificat seul au lieu de fullchain).
Diagnostic de la Chaîne
Outils pour analyser votre chaîne de certificats :
- SSL Labs : le test SSL Labs analyse la chaîne complète et indique explicitement les certificats manquants avec "Chain issues".
- OpenSSL : utilisez openssl s_client pour voir les certificats envoyés par le serveur et vérifier la chaîne.
- What's My Chain Cert : l'outil whatsmychaincert.com génère la chaîne complète à partir de votre certificat.
- Test multi-plateformes : testez sur desktop, mobile, et avec curl pour identifier les environnements affectés.
Correction de la Chaîne
Comment reconstruire et installer la chaîne complète :
#!/bin/bash
# Voir la chaîne actuelle envoyée par le serveur
openssl s_client -connect example.com:443 -showcerts </dev/null 2>/dev/null
# Télécharger et construire la chaîne complète
# Pour Let's Encrypt, utilisez fullchain.pem au lieu de cert.pem
# Nginx:
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# Apache:
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
# Note: SSLCertificateChainFile est obsolète avec Apache 2.4.8+
# Construire manuellement une chaîne (si nécessaire)
cat server.crt intermediate.crt > fullchain.crt
# Vérifier l'ordre de la chaîne
openssl crl2pkcs7 -nocrl -certfile fullchain.pem | openssl pkcs7 -print_certs -noout
# Valider la chaîne localement
openssl verify -CAfile ca-bundle.crt fullchain.pem
La clé est d'utiliser fullchain.pem (Let's Encrypt) ou de concaténer votre certificat avec les intermédiaires dans le bon ordre.
Bonnes Pratiques
Évitez les problèmes de chaîne :
- Utilisez fullchain : avec Let's Encrypt, utilisez toujours fullchain.pem qui inclut automatiquement l'intermédiaire.
- Vérifiez après installation : après chaque changement de certificat, testez avec SSL Labs pour confirmer que la chaîne est complète.
- Documentez votre configuration : notez quel fichier contient quoi pour éviter les erreurs lors des renouvellements.
- Testez sur mobile : les appareils mobiles sont les plus stricts. Si ça fonctionne sur mobile, ça fonctionnera partout.
Checklist Chaîne SSL
- SSL Labs affiche "Chain: Complete"
- Fichier fullchain utilisé dans la configuration
- Test réussi sur mobile
- curl fonctionne sans -k
- Ordre des certificats correct
- Intermédiaires à jour
Questions Fréquentes
Pourquoi Chrome fonctionne mais pas curl ?
Chrome télécharge automatiquement les certificats manquants via AIA (Authority Information Access). Curl et la plupart des outils ne le font pas.
Où trouver les certificats intermédiaires ?
Votre autorité de certification les fournit lors de l'émission. Pour Let's Encrypt, ils sont dans fullchain.pem. Sinon, téléchargez-les du site de la CA.
Dans quel ordre mettre les certificats ?
De haut en bas : votre certificat, puis intermédiaire 1, puis intermédiaire 2, etc. Le root n'est pas nécessaire.
Le root certificate doit-il être dans la chaîne ?
Non, les navigateurs ont déjà les root CA de confiance. Inclure le root ajoute du poids inutile au handshake.
Comment savoir si mon intermédiaire est à jour ?
Vérifiez sa date d'expiration avec openssl. Les CA publient aussi les mises à jour sur leurs sites.
MoniTao détecte-t-il les chaînes incomplètes ?
MoniTao vérifie la connexion SSL complète. Si la chaîne est incomplète et cause une erreur, vous serez alerté.
Complétez Votre Chaîne SSL
Une chaîne de certificat complète est essentielle pour une compatibilité maximale. Utilisez les outils de diagnostic et assurez-vous que tous les certificats intermédiaires sont en place.
Surveillez vos certificats avec MoniTao pour être alerté de tout problème SSL. Une surveillance régulière vous évite les mauvaises surprises.
Liens utiles
Prêt à dormir sur vos deux oreilles ?
Commencez gratuitement, sans carte bancaire.