Comment un certificat SSL peut-il fonctionner pour certains clients uniquement?

11

Mon fournisseur d'hébergement a récemment réémis et réinstallé un certificat SSL pour mon domaine, après avoir laissé l'ancien expirer par erreur.

Je suis maintenant en mesure de parcourir à nouveau le site Web via HTTPS, tout comme mon hôte, tout comme un certain nombre d'autres utilisateurs.

Cependant, certains utilisateurs (au moins une douzaine sur des centaines) reçoivent toujours Your connection is not securedes messages d'erreur sur différents navigateurs et plates-formes. (Il s'avère difficile de diagnostiquer un problème que je ne peux pas reproduire.)

Je comprends que différents navigateurs utilisent différentes listes d'autorités de certification (CA.)

  1. Comment se fait-il qu'un utilisateur exécutant la même version de Firefox que moi (45.0.1 sous OS X) reçoive une SEC_ERROR_UNKNOWN_ISSUERerreur (pour mon site uniquement) alors que je ne le suis pas? Qu'est-ce qui le rend possible? Cet utilisateur a vidé son cache et redémarré son ordinateur portable.

J'ai effectué une vérification SSL sur digicert.com . Le résultat est le suivant:

Le certificat SSL n'est pas approuvé

Le certificat n'est pas signé par une autorité de confiance (vérification par rapport au magasin racine de Mozilla). Si vous avez acheté le certificat auprès d'une autorité de confiance, il vous suffit probablement d'installer un ou plusieurs certificats intermédiaires. Contactez votre fournisseur de certificats pour obtenir de l'aide sur cette opération pour votre plate-forme de serveur.

  1. Comment se fait-il que je puisse me connecter au site sans erreur SSL si c'est le cas?
Fabien Snauwaert
la source
1
My hosting provider has recently re-issued and re-installed an SSL certificate for my domain, after they let the old one expire by mistake.- Comment se fait-il que vous ayez laissé cette responsabilité entre leurs mains?
joeqwerty
3
Simplement parce que je ne suis pas un administrateur système, je leur loue un serveur dédié géré. (Pour la petite histoire, j'écris du matériel d'apprentissage du langage et du code, en plus de gérer l'entreprise, faire un administrateur système, bien qu'intéressant, serait un chapeau de trop.)
Fabien Snauwaert
7
@joeqwerty: Parce que c'est leur travail? Il les paie littéralement pour régler ces trucs pour lui.
Courses de légèreté en orbite le
@LightnessRacesinOrbit: C'est une supposition que je n'ai pas faite, d'où la question.
joeqwerty
1
bugzilla.mozilla.org/show_bug.cgi?id=399324 est le rapport de bogue demandant la prise en charge du téléchargement automatique de certificats intermédiaires dans Firefox. La discussion (8 ans maintenant) se résume à "IE le fait!" / "Au diable IE, le RFC dit que c'est optionnel!" / "Avez-vous déjà entendu parler du principe de robustesse?" / "La configuration de votre serveur est mauvaise et vous devriez vous sentir mal!"

Réponses:

22

La chaîne de certificats de votre certificat est incomplète. Votre fournisseur n'a probablement pas installé de certificat intermédiaire lors de l'installation du nouveau certificat.

La plupart du temps, ces certificats intermédiaires sont fournis par l'autorité SSL, pour prendre en charge certains navigateurs et systèmes d'exploitation plus anciens. C'est la raison pour laquelle, même si cela fonctionne pour vous, cela ne fonctionne pas pour certains de vos clients.

Un très bon utilitaire pour vérifier les problèmes SSL avec votre site Web est le test du serveur SSL par SSLlabs . Comme vous pouvez le voir dans le lien ci-dessus, non seulement vous rencontrez un problème de chaîne ici, mais l'algorithme de signature utilisé pour créer votre certificat est faible, votre serveur Web est toujours vulnérable à l' attaque POODLE et prend toujours en charge RC4, qui est également considéré comme non sécurisé ...

Je ne veux rien dire contre votre fournisseur de serveur Web, mais dans votre position, je leur enverrais un courrier, qu'ils corrigent tous ces problèmes dès que possible, ou changeraient pour un autre fournisseur ...

s1lv3r
la source
Merci, c'est très utile. Par pure curiosité, une idée pourquoi un client sur OS X et la même version de Firefox que la mienne obtient une SEC_ERROR_UNKNOWN_ISSUERerreur alors que je ne le suis pas? Serait-ce que sa version OS est différente?
Fabien Snauwaert
1
@FabienSnauwaert Oui, si vous faites défiler la page jusqu'à "Simulation de prise de contact", le test SSLLabs tentera de simuler diverses combinaisons de versions OS / Navigateur. Le navigateur ne gère pas les connexions SSL de lui-même, mais dépend en partie de la mise en œuvre du système d'exploitation. La version du système d'exploitation fait donc une différence.
s1lv3r
3
Ce n'est pas seulement que les clients peuvent avoir différentes listes de CA. Il est également possible que certains clients mettent en cache des certificats intermédiaires de sorte qu'un site avec un certificat intermédiaire manquant puisse fonctionner si le navigateur a déjà visité un site qui a correctement configuré ce certificat intermédiaire.
kasperd
Le site SSLlabs est un bel outil. Merci pour la référence.
Parapluie
12

Pour qu'un certificat soit approuvé, il doit être signé par une entité qui est elle-même approuvée par votre combinaison navigateur / système d'exploitation, ou qui à son tour a été signée par une telle entité. Cette opération est généralement effectuée par une autorité de certification racine approuvée qui signe une autorité de certification intermédiaire et l'autorité de certification intermédiaire signe votre certificat. Cela crée une chaîne, comme ceci:

  1. Autorité de certification racine approuvée par votre ordinateur et signe
  2. CA intermédiaire, qui signe
  3. Votre certificat, qui n'est approuvé qu'en raison de la chaîne menant à l'autorité de certification racine.

Le problème ici est avec le certificat CA intermédiaire. Afin de vous assurer que tout le monde peut valider la chaîne jusqu'à l'autorité de certification racine, votre fournisseur doit inclure le certificat intermédiaire dans sa configuration de serveur. Dans ce cas, ils ne l'ont pas fait.

La raison pour laquelle cela fonctionne pour certains utilisateurs est qu'ils ont le certificat intermédiaire dans leur propre "magasin de confiance". Dans ces cas, ils accepteront votre certificat car ils font déjà confiance à l'intermédiaire. Mais dans le cas où vos visiteurs ont un OS / navigateur différent, ils n'ont pas le certificat intermédiaire, ils devraient donc l'obtenir de votre serveur Web - et votre serveur Web ne le distribue pas, donc ils n'ont aucun moyen de vérifier.

Jenny D
la source
Merci, cela m'aide à voir clairement le problème maintenant. Existe-t-il une astuce pour amener les utilisateurs à ajouter le certificat intermédiaire à leur propre «magasin de confiance» en attendant que mon hôte corrige le certificat? par exemple: visiter un autre site SSL qui en dépend ou non?
Fabien Snauwaert
1
@FabienSnauwaert Il n'y a malheureusement pas d'astuce. Visiter simplement un site qui a le même certificat intermédiaire n'aidera pas; ils devraient télécharger le certificat et l'ajouter manuellement à leur navigateur. Je crois que ce certificat particulier est inclus dans les nouveaux navigateurs - il fonctionne dans Firefox 45.0.1 mais pas dans 43.0.4, il a donc été inclus quelque part entre ces deux versions. Donc, si vous pouviez amener vos clients à mettre à jour leur navigateur, cela aiderait.
Jenny D
4
Les certificats @JennyD Intermediate sont mis en cache par les navigateurs modernes, donc visiter un site différent qui utilise le même intermédiaire est assez susceptible de fonctionner. Cependant, ce n'est vraiment pas quelque chose que l'on devrait demander à leurs utilisateurs ... (voir: bugzilla.mozilla.org/show_bug.cgi?id=629558 , sslmate.com/blog/post/chrome_cached_sha1_chains )
Bob
0

Si vous utilisiez l'épinglage de clé publique HTTP et que votre fournisseur vous a remis un nouveau certificat, les clés publiques ont peut-être déjà changé. Ces clés sont enregistrées dans le navigateur du client pour la période que vous avez spécifiée.

jarvis
la source