web-dev-qa-db-fra.com

Dans la poignée de main du serveur SSL, le serveur envoie-t-il également un certificat CA

Dans la négociation de serveur SSL TCP, le serveur envoie-t-il également des certificats CA? Le serveur doit-il envoyer tous les certificats CA intermédiaires dans le serveur Bonjour?

15
Rahul_cs12

Le serveur n'envoie aucun certificat dans le message ServerHello; il envoie des certificats dans le message bien nommé Certificate .

Comme indiqué dans la norme, le serveur est censé envoyer une chaîne complète ordonnée de certificat, en commençant par le certificat du serveur proprement dit, puis un certificat pour le l'autorité de certification intermédiaire qui l'a émis, puis un certificat pour l'autorité de certification intermédiaire qui a émis le certificat de l'autorité de certification intermédiaire précédente, etc. À la fin de la chaîne, le serveur a la possibilité d'inclure ou non le certificat d'autorité de certification racine; si la chaîne doit être utile au client, le client doit déjà connaître la racine et n'a donc pas besoin d'une nouvelle copie de celle-ci. Le texte pertinent de la norme est:

   certificate_list
      This is a sequence (chain) of certificates.  The sender's
      certificate MUST come first in the list.  Each following
      certificate MUST directly certify the one preceding it.  Because
      certificate validation requires that root keys be distributed
      independently, the self-signed certificate that specifies the root
      certificate authority MAY be omitted from the chain, under the
      assumption that the remote end must already possess it in order to
      validate it in any case.

ce qui est assez clair.

Notez qu'en général, la chaîne de certificats n'est pas unique. Un certificat de serveur donné peut être soumis à validation via plusieurs, voire plusieurs chaînes de certificats. Cela se produit naturellement lors du renouvellement du certificat CA intermédiaire (car il y aura un moment où le nouveau certificat CA sera valide et l'ancien sera toujours valide, donc s'ils utilisent la même clé, ils seront interchangeables). Dans le cas d'une certification croisée entre des autorités de certification distinctes, les plusieurs chaînes d'un certificat de serveur donné peuvent même conduire à une autorité de certification racine distincte. La conséquence est que bien que le serveur SSL/TLS soit censé envoyer une "chaîne valide", cette chaîne n'est pas nécessairement celle que le client aurait préféré.

En général, les clients SSL/TLS tentent de valider la chaîne de certificats du serveur telle qu'elle est reçue du serveur. Si cette chaîne ne plaît pas au client, alors le comportement du client dépend de l'implémentation: certains clients abandonnent tout simplement; d'autres (en particulier Windows/Internet Explorer) essaieront de créer une autre chaîne en utilisant une autorité de certification intermédiaire connue localement et en téléchargeant également des certificats à partir d'une URL trouvée dans d'autres certificats (l'extension "accès aux informations d'autorité").

33
Thomas Pornin