Je suis un peu confus quant à la façon dont fonctionne le SSL bidirectionnel. Comment le client crée-t-il son certificate à envoyer au serveur? Est-il généré à partir du serveur et dissortingbué au client?
De plus, quel est l’avantage du SSL bidirectionnel sur le protocole SSL unidirectionnel?
Les deux certificates doivent exister avant la connexion. Ils sont généralement créés par les autorités de certificateion (pas nécessairement les mêmes). (Il existe des cas alternatifs où la vérification peut être faite différemment, mais certaines vérifications devront être effectuées.)
Le certificate de serveur doit être créé par une autorité de certificateion approuvée par le client (et en respectant les conventions de dénomination définies dans la RFC 6125 ).
Le certificate client doit être créé par une autorité de certificateion approuvée par le serveur.
C’est à chaque parti de choisir ce qu’il fait confiance.
Il existe des outils en ligne de CA qui vous permettent de demander un certificate dans votre navigateur et de l’installer une fois que l’AC l’a émis. Ils n’ont pas besoin d’être sur le serveur qui demande l’authentification par certificate client.
La dissortingbution de certificates et la gestion de la confiance sont le rôle de l’infrastructure à clé publique (PKI), implémentée via les autorités de certificateion. Le client et les serveurs SSL / TLS, puis simplement les utilisateurs de cette infrastructure à clé publique.
Lorsque le client se connecte à un serveur qui demande une authentification par certificate client, le serveur envoie une liste des autorités de certificateion qu’il souhaite accepter dans le cadre de la demande de certificate client. Le client peut alors envoyer son certificate client, s’il le souhaite, et un certificate approprié est disponible.
Les principaux avantages de l’authentification par certificate client sont les suivants:
Vous pouvez être intéressé par les avantages des certificates clients pour l’authentification client? (sur Security.SE) .
Ce que vous appelez “SSL bidirectionnel” est généralement appelé TLS / SSL avec authentification par certificate client.
Dans une connexion TLS normale à example.com, seul le client vérifie qu’il communique effectivement avec le serveur example.com. Le serveur ne sait pas qui est le client. Si le serveur veut authentifier le client, il est habituel d’utiliser des mots de passe. Un client doit donc envoyer un nom d’utilisateur et un mot de passe au serveur, mais cela se produit à l’intérieur de la connexion TLS. partie du protocole TLS lui-même. L’inconvénient est que vous avez besoin d’un mot de passe distinct pour chaque site, car vous envoyez le mot de passe au serveur. Donc, si vous utilisez le même mot de passe sur PayPal et MyPonyForum par exemple, chaque fois que vous vous connectez à MyPonyForum, vous envoyez ce mot de passe au serveur de MyPonyForum afin que l’opérateur de ce serveur puisse l’intercepter et l’essayer sur PayPal. .
L’authentification par certificate client offre un autre moyen d’authentifier le client dans une connexion TLS. Contrairement à la connexion par mot de passe, l’authentification par certificate client est spécifiée dans le cadre du protocole TLS. Cela fonctionne de la même manière que le client authentifie le serveur: le client génère une paire de clés privées publiques et soumet la clé publique à une autorité de certificateion approuvée pour signature. L’autorité de certificateion renvoie un certificate client pouvant être utilisé pour authentifier le client. Le client peut désormais utiliser le même certificate pour s’authentifier sur différents serveurs (c.-à-d. Que vous pouvez utiliser le même certificate pour PayPal et MyPonyForum sans risquer d’en abuser). La façon dont cela fonctionne est que, après que le serveur a envoyé son certificate, il demande au client de fournir également un certificate. Puis, une magie de clé publique se produit (si vous voulez connaître les détails, lisez RFC 5246 ) et maintenant le client sait qu’il communique avec le bon serveur. Le serveur sait qu’il communique avec le bon client. la connexion.
Dans les deux sens, le client demande le certificate numérique du serveur et le serveur demande le même au client. Il est plus sécurisé car il est bidirectionnel, même s’il est un peu lent. En général, nous ne le suivons pas car le serveur ne se soucie pas de l’identité du client, mais un client doit s’assurer de l’intégrité du serveur auquel il se connecte.