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.