Si j'installe un certificat client dans mon navigateur, quels sites Web peuvent voir des informations sur ce certificat client ou l'autorité de certification qui l'a délivré?
J'ai visité une fois un site de diagnostic SSL qui a immédiatement rendu compte des informations d'un de mes certificats client, y compris mon nom (que j'avais mis dans l'autorité de certification qui a émis le certificat client).
Cela est lié à: Protection des informations dans les certificats clients TLS Mais c'est à peu près comment le certificat est envoyé au site Web auquel il est destiné. Je pose des questions sur des sites Web non liés.
Question interessante! Il se trouve que j'ai un navigateur plein de certificats de test et un certain nombre de sites de test auxquels se connecter! Testons cela!
(Passer au bas pour un résumé)
Firefox chargé de certificats, un site de test qui nécessite un certificat client TLS, Wireshark.
J'ai redémarré Firefox pour obtenir une session propre. Ensuite, j'ai entré l'URL d'un site Web qui demandera un certificat client TLS et je me suis arrêté une fois que j'ai obtenu le popup "Veuillez choisir un certificat". Il s'agit de la capture de paquets Wharkshark jusqu'à ce point:
Le client envoie un ClientHello générique.
Le serveur envoie un ServerHello qui inclut le certificat de serveur et une demande de certificat client.
À ce stade, Firefox présente la fenêtre contextuelle pour que je puisse sélectionner le certificat que je souhaite envoyer. Si j'appuie sur Annuler, il n'y a plus de trafic réseau, c'est-à-dire que rien n'est envoyé au serveur au-delà du ClientHello générique qui ne contient aucune information personnellement identifiable. (à part la liste des suites de chiffrement prises en charge, qui pourraient être utilisées pour déterminer quelle version de quel navigateur vous utilisez)
Remarque 1: J'ai essayé le même test avec un seul certificat client dans mon navigateur, et j'ai même cliqué sur "Se souvenir de cette décision" dans la fenêtre de sélection du certificat et obtenir le même résultat. Je ne peux donc pas reproduire votre résultat de l'envoi de données privées au serveur sans que je clique sur "OK".
Remarque 2: Comme indiqué par @JohnWu dans les commentaires, vous pouvez modifier le comportement de Firefox dans les paramètres, auquel cas il se comporte de la même manière non sécurisée que Chrome ci-dessous. Le paramètre par défaut est:
Exactement le même scénario de test que ci-dessus, mais avec Chrome. (Notez que Chrome n'a pas son propre magasin de certificats, mais utilise à la place votre magasin de certificats Windows, qui est un peu plus délicat à manipuler que Firefox. Détails pour cela non inclus ici. )
BINGO !! Chrome commence immédiatement à envoyer des certificats clients au serveur sans aucune invite de l'utilisateur. Ce certificat a été rejeté par le serveur car il était destiné à un site Web différent. Oui, c'est un problème de confidentialité.
Remarque 1: @JohnWu souligne qu'il est possible de modifier ce comportement et d'avoir Chrome Prompt, mais ce n'est pas le comportement par défaut, et vous devez aller plonger dans la stratégie de groupe Windows (GPO) pour le faire .
Remarque 2: la reproductibilité de cela peut dépendre de la façon dont votre système d'exploitation Windows a été configuré car Chrome a tendance à hériter de nombreux paramètres de sécurité d'IE.
Dans mes tests avec les deux navigateurs que j'ai dans mon environnement de test (Firefox et Chrome), Chrome a montré le comportement que vous décrivez (spamming certs client sur le serveur indépendamment du fait qu'ils proviennent d'un autre site), alors que Firefox m'a poliment demandé de confirmer quel certificat envoyer, même si je n'avais qu'un seul certificat installé.
Conclusion: Si vous vous souciez de la confidentialité, alors Chrome n'est pas votre ami. Utilisez plutôt Firefox.