1 votes

Pour l'authentification du client, pourquoi un client peut-il accéder à un site grâce au certificat openssl appartenant à un autre client ?

Afin de tester l'authentification à deux voies, j'ai créé un certificat CA par openssl. J'ai ensuite créé deux certificats pour deux sites ("a.com" et "b.com") en tant que certificats côté serveur. J'ai également créé deux certificats clients (client "a" et client "b"). Tous ces certificats sont signés par la même autorité de certification.

Côté client, chaque certificat client est utilisé pour accéder au site concerné. En d'autres termes, pour accéder au site "a.com", le certificat appartenant au client "a" est nécessaire, ou le client "a" doit être authentifié. Le client "b" se trouve dans la même situation pour accéder au site "b.com".

Dans une expérience, je n'ai importé dans le navigateur que le certificat appartenant au client "a". En sélectionnant le certificat correspondant, le site "a.com" a été ouvert. Mais lorsque j'ai essayé d'ouvrir "b.com", le certificat appartenant au client "a" a été affiché et en le sélectionnant, j'ai pu accéder à "b.com". Il est à noter que seul le certificat "a" a été importé.

(Il convient également de noter que le certificat du client contient également le certificat de l'autorité de certification).

Quelle est la raison de ce problème ?

0voto

nachopro Points 181

Il ne s'agit pas d'un problème, mais d'une volonté délibérée. En installant votre certificat d'autorité de certification unique sur les sites web "A" et "B", vous leur donnez l'instruction de faire confiance à tous les certificats clients émis par cette autorité de certification.

Pour que cela fonctionne comme vous le prévoyez, il faudrait disposer de deux autorités de certification différentes, l'une pour le serveur et les clients "A" et l'autre pour les serveurs et les clients "B".

Le serveur web Apache peut également vous aider, car il dispose des fonctions suivantes SSLRequire o Require qui permettent de filtrer les certificats des clients pour des expressions spécifiques. Vous pourriez éventuellement vous assurer que tous les utilisateurs du site web "A" disposent d'un certificat dont l'OU correspond à une chaîne spécifique, tandis que les utilisateurs du site web "B" disposent d'une chaîne différente, et filtrer sur ces derniers. Vous pourriez éventuellement filtrer sur les OID de la politique de certification si vous les avez mis en œuvre.

Nginx a variables intégrées qui contiennent des détails sur les certificats des clients et que vous pouvez utiliser pour filtrer.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X