web-dev-qa-db-fra.com

Quelle est la différence entre un "certificat client" X.509 et un certificat SSL normal?

Je mets en place un service web à travers lequel mon entreprise s'adressera à un certain nombre de services clients commerciaux. Nous échangerons des informations à l'aide de SOAP. Je voudrais gérer l'authentification avec des certificats SSL fournis par les deux parties, mais je suis un peu perdu quant à la différence fondamentale entre les types de certificats.

Lorsque les gens parlent de HTTPS, ils parlent d'obtenir un certificat SSL auprès de Verisign ou d'une autre autorité. Quand 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, peut-on se transformer en l'autre, ou est-ce une autre différence que je ne comprends pas?

97
Brandon Yarbrough

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 et en vérifiant la partie (Verisign fait confiance à ce site Web pour être qui ils disent être, donc vous pourriez probablement aussi). Verisign agit en tant qu'autorité de certification (CA). On fait confiance à l'autorité de certification en ce 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é importantes). Par conséquent, si une autorité de certification vous donne un certificat indiquant qu'elle est convaincue que vous êtes vraiment vous, vous disposez d'un certificat utilisateur/certificat client.

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

Si vous ouvrez un certificat dans Windows (accédez à quelque chose sur SSL dans IE et regardez les propriétés du certificat) ou exécutez certmgr.msc et affichez un certificat, regardez l'onglet Détails> Utilisation des clés. Cela dictera à quoi le certificat est autorisé à faire/être utilisé.

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 demande SOAP, elle remet le certificat au service Web pour lui dire qui fait la demande.

65
Steve

Dans TLS, le serveur doit disposer d'une clé privée et d'un certificat (parfois appelé certificat de serveur). Le certificat de serveur identifie et authentifie le serveur. Le client peut également disposer de sa propre clé privée et de 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, le serveur possède généralement un certificat serveur mais les certificats client ne sont pas utilisés. Cela signifie que le client peut authentifier le serveur auquel il parle, mais 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 points de terminaison s'authentifient mutuellement. Par conséquent, vous souhaiterez utiliser à la fois les certificats serveur et les certificats 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 fournis avec une liste de près de 100 autorités de certification différentes, préinstallées et les sites Web les plus utilisés ont un certificat de serveur délivré 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 toute personne de votre choix). Ce n'est pas très largement utilisé sur le Web, car les certificats de serveur auto-signés font que les navigateurs font apparaître 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 de l'argent Verisign. Vous pouvez trouver des didacticiels sur la façon d'utiliser les outils de ligne de commande d'OpenSSL pour créer vos propres certificats auto-signés.

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

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

36
D.W.

Les certificats SSL "normaux" sont généralement sont les certificats X.509.
Cependant, ceux-ci ne peuvent être utilisés que pour l'authentification et le cryptage 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.
À 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.

15
AviD

Fonctionnellement, ce sont les mêmes - 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 pense pas que quelque chose 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.

4
Jeff Ferland