Comment Chrome et Firefox valident-ils les certificats SSL? Demandent-ils des données à un site Web de certification SSL, comme GeoTrust, pour valider le certificat reçu du serveur Web?
Les navigateurs et/ou les systèmes d'exploitation ont tendance à fournir une liste prédéfinie de certificats CA utilisés comme ancres de confiance pour vérifier les certificats des serveurs auxquels ils se connectent. Ils sont tous personnalisables (à l'exception des certificats EV, pour lesquels les certificats racine sont codés en dur dans le navigateur, bien que vous puissiez les désactiver ... sauf bug).
Firefox utilise son propre liste sur toutes les plateformes.
Internet Explorer et Chrome utilisent le référentiel de certificats du système d'exploitation sous Windows. La valeur par défaut est disponible via Microsoft programme de certificat racine .
Apple a également son programme .
La confiance dans un certificat de serveur a priori inconnu se fait en créant un chemin de certification entre ce certificat et l'une des ancres de confiance du navigateur. Cela se fait comme défini dans RFC 3280/RFC 5280.
De plus, la révocation des certificats peut également être vérifiée, soit via CRL, soit via OCSP.
Il n'est donc pas possible d'intercepter la communication entre le navigateur et une autorité de certification pour simuler un certificat valide car le certificat est probablement déjà dans le cache du navigateur?
Pour réitérer le point que j'ai fait en tant que commentaire aux réponses de Wug: le dépôt d'ancres de confiance n'est pas un cache . Un cache est un espace réservé dynamique destiné à garder ce que vous avez accédé récemment à votre disposition, en supposant que vous en aurez bientôt besoin. En revanche, votre liste de certificats de confiance ne doit jamais être mise à jour automatiquement sur la base de ce que vous parcourez actuellement. (Il pourrait être mis à jour par des mises à jour de sécurité automatiques, mais c'est un problème différent.)
Le certificat de serveur sera obtenu chaque fois qu'une nouvelle session SSL/TLS est établie, et le navigateur doit le vérifier à chaque fois. Ce n'est pas mis en cache. (Vous pouvez avoir une certaine mise en cache OCSP, mais c'est pour améliorer les performances et conservé uniquement pendant une courte période. C'est juste pour vérifier l'état de révocation, au moment de l'accès.)
Contacter l'AC est juste pour la révocation de certificats. Vous ne contactez pas autrement une autorité de certification. Les certificats CA (vos ancres de confiance) sont une donnée, un "acte de foi", regroupés pour vous par votre système d'exploitation/navigateur (que vous pouvez choisir explicitement, mais il est fixe en ce qui concerne une connexion donnée). Au mieux, vous pouvez empêcher la vérification de la révocation du certificat (ce qui peut entraîner l'échec de la validation de votre navigateur, en fonction de ses paramètres).
Le serveur Web enverra toute la chaîne de certificats au client sur demande. Le navigateur (ou un autre validateur) peut alors vérifier le certificat le plus élevé de la chaîne avec les certificats CA stockés localement.
La plupart des systèmes d'exploitation conservent un cache de certificats faisant autorité auxquels les navigateurs peuvent accéder à de telles fins, sinon le navigateur en aura son propre ensemble quelque part.
Un certificat peut être signé par un autre certificat, formant une "chaîne de confiance" se terminant généralement par un certificat faisant autorité signé par une entité telle que GeoTrust, Verisign, Godaddy, etc.
Ce serait une meilleure question pour le site SE de sécurité.
Google Chrome, en particulier, je ne suis pas sûr à 100% utilise le cache du système d'exploitation, mais vous pouvez ajouter un certificat faisant autorité via Wrench -> Paramètres -> Afficher les paramètres avancés -> HTTPS/SSL -> Gérer les certificats -> Autorités de certification racine de confiance et en y ajoutant un certificat CA faisant autorité.
Comme Wug l'a expliqué, la validation a lieu du certificat de serveur au certificat le plus élevé de la chaîne. Le navigateur examinera les propriétés du certificat et effectuera une validation de base, par exemple en s'assurant que l'URL correspond à Issued to
champ, le Issued By
le champ contient une autorité de certification de confiance, la date d'expiration semble bonne dans le Valid From
champ, etc.
De plus, chaque certificat contient des URL pointant vers des listes de révocation de certificats (CRL Distribution Points
), le client tentera de télécharger la liste à partir de cette URL et s'assurera que le certificat à portée de main n'a pas été révoqué.
Pour répondre à votre question
Demande-t-il des données au site Web de certification SSL comme GeoTrust pour valider le certificat reçu du serveur Web?
Oui, le navigateur effectuera une validation de base puis contactera le serveur d'autorité CA (via les points CRL) pour s'assurer que le certificat est toujours valide.
Voici mon point de vue sur la vaildation des certificats. En supposant que le certificat Web porte le nom correct, le navigateur essaie de trouver l'autorité de certification qui a signé le certificat du serveur Web pour récupérer la clé publique du signataire. L'autorité de certification signataire peut faire partie d'une chaîne d'AC
Avec la clé publique, la signature sur le certificat du site Web peut être déchiffrée (cela garantit que seule l'autorité de certification aurait pu la signer à moins que leur clé privée n'ait été compromise) pour révéler un hachage du certificat du serveur Web. Le navigateur calcule également ce hachage du certificat de serveur Web et si les deux hachages correspondent, cela prouve que l'autorité de certification a signé le certificat.
Si la clé publique du signataire est introuvable ou si les hachages ne correspondent pas, le certificat n'est pas valide.
Le problème avec ce système est que les autorités de certification ne sont pas complètement fiables.
Notez que Google Chrome a cessé d'utiliser les listes CRL vers le 7 février 2012 pour vérifier si un certificat était valide. Il semble qu'ils créent tous les certificats valides dans le navigateur et installent un nouvel ensemble chaque fois que le navigateur est mis à jour. Voir URL: https://threatpost.com/en_us/blogs/google-stop-using-online-crl-checks-chrome-020712 .