(modifié le 13 juillet 2024 à 21:34)

L'installation d'un certificat HTTPS sur votre site web est une opération de routine mais qui peut réserver quelques surprises. On parle ici des certificats payants achetés sur une autorité tierce. Let's Encrypt étant un cas un peu à part je ne l'évoquerai pas ici.

Vous devez installer non seulement le certificat de votre site, mais aussi un ou plusieurs certificats intermédiaires, aussi appelés chaine de certificats. Si cette chaine est incorrecte vous risquez de provoquer des erreurs de certificat dans les navigateurs, et le visiteur fermera l'onglet.

Tous les navigateurs ne fonctionnent pas de la même façon, Firefox dispose par exemple de son propre magasin de certificats. Et c'est une bonne chose que de ne pas dépendre du business de Microsoft pour cela.

Une chaine de certificats, kezako ?

Avant d'aller plus loin il est essentiel de comprendre de quoi on parle.

Une chaîne de sécurité, également appelée chaîne de certificats, est une hiérarchie de certificats numériques utilisée pour les connexions sécurisées (certificat X509 ou HTTPS par abus de langage quand on parle d'un site web).

Root CA (Autorité de Certification Racine) : c'est l'autorité de certification principale qui émet des certificats de confiance. Il s'agit du point de départ de la chaîne de certificats. Les navigateurs et systèmes d'exploitation ont préinstallé les certificats de ces autorités racines pour établir une confiance de base (cf business de Microsoft plus haut).

SubCA (Autorité de Certification Intermédiaire/subordonnée) : ces autorités intermédiaires sont situées entre la racine et le certificat de serveur. Elles sont utilisées pour déléguer la tâche de délivrance de certificats aux entités finales, telles que les serveurs web. Les certificats de ces autorités intermédiaires sont signés par l'autorité racine (rootCA).

Certificat (SSL/TLS) : il est émis par une autorité intermédiaire (subCA) et est utilisé par un serveur pour prouver son identité aux utilisateurs. Ce certificat contient la clé publique du serveur et est signé par la clé privée de l'autorité intermédiaire (lien mathématique).

Lorsqu'un utilisateur visite un site web sécurisé, le navigateur vérifie la validité du certificat en remontant la chaîne jusqu'à l'autorité racine. Si la vérification réussit, la connexion est considérée comme sécurisée, assurant ainsi l'authenticité du site et le chiffrement des données échangées.

Erreur : "votre connexion n'est pas privée"

Ou encore :

"risque probable pour votre sécurité : firefox a détecté une menace de sécurité potentielle et n'a pas poursuivi vers..." avec Firefox.

Une chaîne de certificat mal configurée peut fonctionner dans certains navigateurs mais pas dans d'autres. Par exemple : le site fonctionne sur desktop mais pas sur mobile. De plus, lorsque vous renouvelez votre certificat, il se peut que vous deviez installer de nouveaux certificats intermédiaires.

Pour vérifier que le certificat est correctement installé tout le monde utilise Qualys ou équivalent. C'est très pratique mais un peu long et parfois un peu indigeste si vous voulez simplement vérifier votre chaine de certificat.

whatsmychaincert.com

C'est pourquoi j'utilise le site whatsmychaincert.com, aussi simple qu'utile : il indique si votre chaine est valide ou non.

Si votre chaine n'est pas valable il vous indique quelle chaîne vous devriez servir et vous aide à configurer votre serveur : Apache, nginx, postfix, stunnel etc. Soit en collant le certificat (publique, ne mettez pas ici votre clé privée!), soit directement depuis l'URL du site.

Il vous propose ensuite de télécharger la chaine que vous n'aurez plus qu'à utiliser ce fichier sur votre serveur :

Conclusion

Ce site m'est très utile au quotidien. En effet il n'est pas rare d'avoir aucune erreur sur un navigateur desktop mais des erreurs sur mobile, que ce soit dans une application, via une API ou un outil (wget, cURL).

Je le trouve fiable et s'il me dit que tout est OK alors le problème est ailleurs que dans le chaine de certificat / certificat.

➡️ whatsmychaincert.com

Bonus : convertir les formats entre-eux (PEM, DER, P12, etc).

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter