Question:
Quelle est la différence entre un "certificat client" X.509 et un certificat SSL normal?
Brandon Yarbrough
2011-01-04 00:38:30 UTC
view on stackexchange narkive permalink

Je mets en place un service Web à travers lequel mon entreprise communiquera avec un certain nombre de services de clients professionnels. Nous échangerons des informations en utilisant SOAP. Je voudrais gérer l'authentification avec des certificats SSL fournis par les deux parties, mais je ne sais pas s'il y a une différence fondamentale entre les types de certificats.

Quand les gens parlent de HTTPS, ils parlent d'obtenir un certificat SSL de Verisign ou d'une autre autorité. Lorsqu'ils parlent d'authentification côté client, ils parlent d'obtenir un certificat X.509. Ces deux mots sont-ils pour la même chose, l'un peut-il être transformé en l'autre, ou y a-t-il une autre différence que je ne saisis pas?

Quatre réponses:
#1
+66
Steve
2011-01-04 00:52:57 UTC
view on stackexchange narkive permalink

Un certificat X509 est un type de clé publique dans une paire de clés publique / privée. Ces paires de clés peuvent être utilisées pour différentes choses, comme le cryptage via SSL, ou pour l'identification. Les certificats SSL sont un type de certificat X509. SSL fonctionne en cryptant le trafic ainsi qu'en vérifiant la partie (Verisign fait confiance à ce site Web pour être qui il prétend être, donc vous pourriez probablement aussi). Verisign agit en tant qu'autorité de certification (CA). L'autorité de certification est convaincue que tout ce qu'elle dit doit être considéré comme vrai (l'exécution d'une autorité de certification nécessite des considérations de sécurité majeures). Par conséquent, si une autorité de certification vous donne un certificat indiquant qu'elle a confiance que vous êtes vraiment vous, vous avez un certificat utilisateur / certificat client.

Certains de ces types de certificats peuvent être utilisés dans tous les domaines, mais d'autres peuvent être utilisé uniquement pour certaines activités.

Si vous ouvrez un certificat dans Windows (accédez à quelque chose via SSL dans IE et regardez les propriétés du certificat) ou exécutez certmgr.msc et affichez un certificat, regardez les détails onglet> Utilisation de la clé. Cela dictera ce que le certificat est autorisé à faire / à utiliser.

Pour SOAP, le certificat peut être utilisé pour deux choses: l'identification et le chiffrement. Eh bien, trois si vous incluez des signatures de message (hachage de message).

Les certificats clients identifient le client ou l'utilisateur appelant. Lorsque l'application fait une requête SOAP, elle transmet le certificat au service Web pour lui dire qui fait la requête.

Ah, très bien, donc tous les certificats SSL sont des certificats x509, ce qui signifie que je peux simplement récupérer un certificat SSL de Verisign et l'utiliser pour les demandes des clients. Cependant, un certificat X509 n'a pas nécessairement une utilisation définie pour permettre l'identité ou l'authentification. Cool merci!
@CaptainAwesomePants,, vous pourrez peut-être utiliser le certificat SSL de Verisign en tant que certificat client. Si l'utilisation de la clé n'inclut pas l'authentification client, elle ne sera probablement pas acceptée pour l'authentification client.
Bonne réponse. Mais votre introduction est une fausse déclaration déroutante: "Un certificat X509 est un type de paire de clés publique / privée." Si la clé privée s'y trouvait, vous ne pouviez pas la publier ... Pouvez-vous résoudre ce problème?
@nealmcb mis à jour. Vous avez raison, cependant dans le monde des développeurs .NET, un X509Certificate peut également contenir la clé privée. Je pense que c'est pourquoi j'ai écrit ce que j'ai fait.
@CaptainAwesomePants en fait, tous les certificats SSL / TLS ne sont pas des certificats X.509. Vous pouvez utiliser des certificats OpenPGP (voir RFC 5081 http://tools.ietf.org/html/rfc5081), mais c'est assez rare (peu de piles les supportent pour autant que je sache).
#2
+37
D.W.
2011-01-07 11:32:44 UTC
view on stackexchange narkive permalink

En TLS, le serveur doit avoir une clé privée et un certificat (parfois appelé certificat de serveur). Le certificat de serveur identifie et authentifie le serveur. Le client peut également avoir sa propre clé privée et son propre certificat (généralement appelé certificat client). Si un certificat client est utilisé, il identifie et authentifie le client.

Sur le Web, avec HTTPS, généralement le serveur a un certificat serveur mais les certificats client ne sont pas utilisés. Cela signifie que le client peut authentifier le serveur auquel il s'adresse, mais que le serveur ne peut pas authentifier le client qui s'y connecte.

Cependant, dans de nombreux contextes de programmation, vous souhaiterez généralement que les deux terminaux s'authentifient mutuellement . Par conséquent, vous voudrez utiliser à la fois les certificats de serveur et les certificats de client.

Dans TLS, tous les certificats sont des certificats X.509. X.509 est juste le format des données.

Les certificats incluent une clé publique et une signature d'une autorité de certification (CA). Sur le Web, les sites Web ont généralement un certificat de serveur émis (signé) par Verisign ou une autre autorité de certification bien connue. Les navigateurs Web sont livrés avec une liste de près de 100 autorités de certification différentes, préinstallées, et les sites Web les plus largement utilisés ont un certificat de serveur émis par l'une de ces autorités de certification. Par exemple, Verisign est l'une des autorités de certification dans la liste standard des autorités de certification de chaque navigateur. Verisign vous facture de l'argent si vous souhaitez qu'ils vous délivrent un certificat.

L'alternative à la signature de votre certificat par une autorité de certification standard est que vous pouvez utiliser un certificat auto-signé: un certificat émis, non par l'une des autorités de certification standard, mais par vous-même (ou par toute personne de votre choix). Ce n'est pas très utilisé sur le Web, car les certificats de serveur auto-signés font que les navigateurs affichent des boîtes de dialogue d'avertissement à l'utilisateur, ce que la plupart des sites Web essaient d'éviter. Cependant, pour les utilisations programmatiques, les certificats auto-signés peuvent fonctionner correctement. Et si vous utilisez des certificats auto-signés, vous n'avez pas à payer d'argent Verisign. Vous pouvez trouver des didacticiels sur l'utilisation des outils de ligne de commande d'OpenSSL pour créer vos propres certificats auto-signés.

SSL est un synonyme de TLS. (Techniquement, SSL est le nom utilisé avec plusieurs anciennes versions de la norme, et TLS est un nouveau nom pour plusieurs versions plus récentes des normes. Cependant, de nombreuses personnes utilisent les deux termes de manière interchangeable.)

Je vous encourage à lire l ' article de Wikipédia sur le certificat de clé publique pour plus d'informations utiles.

(commentaire similaire à l'autre réponse): à proprement parler, tous les certificats TLS ne sont pas des certificats X.509, et je viens de remarquer que la RFC 5081 avait été mise à jour récemment: RFC 6091 http://tools.ietf.org/html / rfc6091
Pour qu'un serveur prenne en charge l'authentification par certificat client, le serveur doit-il également prendre en charge le serveur SSL? Lorsque je lis des didacticiels sur l'authentification du certificat client, ils semblent tous suggérer que le serveur doit également disposer d'un certificat SSL.
@CMCDragonkai, oui. Les certificats clients sont utilisés avec SSL / TLS, le serveur doit donc utiliser SSL / TLS. Pour l'avenir, veuillez poser de nouvelles questions dans une question distincte, et non en tant que commentaires sous une question existante.
#3
+15
AviD
2011-01-04 04:07:53 UTC
view on stackexchange narkive permalink

Les certificats SSL "normaux" sont généralement des certificats X.509.
Cependant, ils ne peuvent être utilisés que pour l'authentification et le chiffrement du serveur: l'un des attributs des certificats est son objectif désigné, et vous ne pouvez généralement pas l'utiliser à des fins différentes.
A part cela, cependant, un certificat client est à peu près identique à un certificat serveur, simplement désigné comme «authentification client».

Fonctionnellement, vous constaterez souvent que certains systèmes choisissent d'accepter uniquement un sous-ensemble de certificats clients, par exemple ceux émis par leur propre CA.

#4
+4
Jeff Ferland
2011-01-04 00:46:40 UTC
view on stackexchange narkive permalink

Sur le plan fonctionnel, ils sont identiques: une clé RSA publique et des informations d'identification signées par une autorité. En pratique, vos clés de serveur sont généralement configurées avec un nom commun qui identifie le domaine en question (* .wikimedia.org, par exemple). Je ne crois pas que quoi que ce soit vous empêche d'utiliser un certificat, y compris auto-généré, tant qu'il correspond aux exigences d'authentification de l'autre partie.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 2.0 sous laquelle il est distribué.
Loading...