Sélection du certificat SSL en fonction de l'en-tête d'hôte: est-ce possible?


17

Est-il possible pour un serveur Web de sélectionner un certificat SSL à utiliser en fonction de l'en-tête d'hôte de la connexion entrante, ou ces informations ne sont-elles disponibles qu'une fois la connexion SSL établie?

Autrement dit, mon serveur Web peut-il être répertorié sur le port 443 et utiliser le certificat foo.com si https://foo.com est demandé, et le certificat bar.com si https://bar.com est demandé ou j'essaie de le faire quelque chose d'impossible car le serveur doit établir une connexion SSL avant de savoir ce que veut le client?

Réponses:


23

Historiquement, votre première déclaration est exacte. Maintenant, il existe plusieurs options:

  • Un certificat générique s'il s'agit de sous-domaines du même domaine.
  • Un certificat SAN / UCC pour spécifier des noms alternatifs pour le certificat, pouvant ainsi servir plusieurs certificats.
  • SNI a été introduit pour établir la connexion SSL après l'en-tête Host. Cela a cependant un support limité, car il est plus récent.

Cela a été répondu à plusieurs reprises sur ServerFault par moi-même et par d'autres. Je suggère de rechercher de plus amples détails, sauf si vous avez une question spécifique.


4
Je suis allé chercher et je n'ai rien trouvé; c'est probablement l'une de ces choses qui n'est facile à rechercher que si vous connaissez la réponse afin que vous puissiez l'inclure dans les termes de recherche. Merci.
— DrStalker

3
S'il existe des réponses existantes sur ServerFault, il aurait été bien de les lier à celles-ci.
— Organicveggie

serverfault.com/search , @organicveggie.
— Warner

3
SNI n'établit pas la connexion SSL après l'en-tête Host, mais inclut le nom d'hôte dans la négociation SSL. Ce n'est pas important si vous n'êtes pas un développeur SSL.
— Bart van Heukelom

La recherche de Serverfault donne cela comme réponse. Cela signifie que canoniquement toutes les autres questions sont des doublons de celle-ci. Ce lien que vous avez inclus n'a aucun résultat.
— Ian Boyd

5

Pour étendre la réponse de Warner: page de CAcert, Vhost Task Force compare plusieurs méthodes d'utilisation de plusieurs domaines sur un même serveur. J'utilise personnellement l' indication du nom du serveur .


Comment gérez-vous les utilisateurs de Windows XP, les utilisateurs d'Android, les utilisateurs de Blackberry, etc.?
— thomasrutter

3

Réponse courte: non

HTTP est encapsulé dans SSL , donc toute information sur la demande est inaccessible jusqu'à ce que la connexion soit établie. D'où jusqu'à ce qu'un certificat soit remis au client. Aucun moyen d'utiliser les en-têtes ni aucune autre information chiffrée, car ils ne sont toujours pas disponibles.

EDIT: ceci est vrai si vous voulez de nos jours être multi-navigateur et entièrement portable. Comme d'autres l'ont dit, de nouvelles méthodes émergentes le permettent dans un avenir proche.


1

ou ces informations ne sont-elles disponibles qu'une fois la connexion SSL établie?

Correct. La connexion SSL est établie avant l'envoi de toute partie de la demande HTTP (en-tête d'hôte inclus).


2
Ce n'est plus tout à fait exact.
— Warner
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.