web-dev-qa-db-fra.com

Quelle est la différence entre les certificats SSL et X.509?

J'ai utilisé openssl pour créer un certificat X.509 mais je ne comprends pas très bien la relation entre un X.509 et un certificat SSL. Sont-ils les mêmes? Un certificat SSL est-il simplement un certificat X.509 utilisé pour SSL?

47
vernomcrp

SSL est de loin la plus grande utilisation des certificats X.509, de nombreuses personnes utilisent les termes de manière interchangeable. Ce ne sont pas les mêmes cependant; un "certificat SSL" est un certificat X.509 avec utilisation de clé étendue: authentification du serveur (1.3.6.1.5.5.7.3.1).

L'autre type "commun" de certificats X.509 est l'authentification client (1.3.6.1.5.5.7.3.2), la signature de code (1.3.6.1.5.5.7.3.3), et une poignée d'autres sont utilisées pour divers cryptages et schémas d'authentification.

49
Chris S

certificats X.509 sont un format générique très flexible. SSL (maintenant appelé "TLS") utilise des certificats X.509. Un "certificat SSL" est un certificat dont le contenu le rend utilisable pour SSL (généralement utilisable pour un serveur SSL ).

En particulier, dans la plupart des utilisations de SSL, le client voudra voir le nom de serveur prévu dans le certificat. Dans un contexte Web (HTTPS), le "nom de serveur prévu" est celui qui apparaît dans l'URL; les vérifications effectuées par le client sont décrites dans RFC 2818 (section 3.1) . De plus, lorsqu'un client et un serveur "parlent SSL", ils s'accordent sur les algorithmes cryptographiques à utiliser, dont certains impliquent l'utilisation de la clé publique du serveur, telle qu'elle apparaît dans le certificat; par exemple, si le client et le serveur choisissent une suite de chiffrement qui dit "échange de clés RSA", le certificat de serveur doit contenir une clé publique RSA et si le certificat contient des extensions qui limitent les façons autorisées d'utiliser cette clé (par exemple le Key Usage extension), alors ces extensions doivent autoriser l'utilisation du "chiffrement" car c'est ce qui est impliqué par "RSA key exchange" dans SSL.

D'autres caractéristiques des certificats peuvent interdire l'utilisation d'un serveur SSL, où "interdire" signifie "le client hurlera et balbutiera et affichera un avertissement rouge effrayant à l'utilisateur". Par exemple, un certificat peut contenir un Extended Key Usage extension qui liste la liste exhaustive des "rôles" de l'entité qui l'utilise; si l'extension est présente, elle doit contenir "authentification du serveur" ou l'indicateur spécial "toute utilisation".

Il y a beaucoup de détails à prendre en compte. L'AC commerciale résume le tout comme "un certificat SSL", ce qui signifie vraiment "un certificat X.509 qui est tout casher pour SSL, tous les clients en seront satisfaits".

27
Thomas Pornin