Wybór certyfikatu SSL na podstawie nagłówka hosta: czy to możliwe?

17

Czy serwer WWW może wybrać certyfikat SSL do użycia na podstawie nagłówka hosta połączenia przychodzącego, czy te informacje są dostępne dopiero po ustanowieniu połączenia SSL?

To znaczy, czy mój serwer może być wymieniony na porcie 443 i użyć certyfikatu foo.com, jeśli zażądano https://foo.com , oraz certyfikatu bar.com, jeśli zażądano https://bar.com lub czy próbuję to zrobić coś niemożliwego, ponieważ serwer musi ustanowić połączenie SSL, zanim będzie wiedział, czego chce klient?

DrStalker
źródło

Odpowiedzi:

23

Historycznie twoje pierwsze stwierdzenie jest dokładne. Teraz istnieje wiele opcji:

  • Certyfikat wieloznaczny, jeśli poddomeny w tej samej domenie.
  • Certyfikat SAN / UCC określający alternatywne nazwy certyfikatu, umożliwiający w ten sposób obsługę wielu certyfikatów.
  • SNI zostało wprowadzone w celu ustanowienia połączenia SSL po nagłówku hosta. Ma to jednak ograniczone wsparcie, ponieważ jest nowsze.

Odpowiedzi na to wielokrotnie udzielał na ServerFault ja i inni. Proponuję poszukać dalszych szczegółów, chyba że masz konkretne pytanie.

Warner
źródło
4
Poszedłem szukać i nic nie mogłem znaleźć; jest to prawdopodobnie jedna z tych rzeczy, które można łatwo wyszukać tylko wtedy, gdy znasz odpowiedź, dzięki czemu możesz uwzględnić ją w wyszukiwanych hasłach. Dzięki.
DrStalker
3
Jeśli istnieją odpowiedzi na ServerFault, fajnie byłoby połączyć się z nimi.
organicveggie
serverfault.com/search , @organicveggie.
Warner
3
SNI nie ustanawia połączenia SSL po nagłówku hosta, ale zawiera nazwę hosta w uzgadnianiu SSL. Nie ma znaczenia, że ​​nie jesteś programistą SSL.
Bart van Heukelom
Przeszukanie błędu serwera daje odpowiedź. Oznacza to, że kanonicznie wszelkie inne pytania są duplikatami tego pytania. Że związek ty zawarte nie ma wyników.
Ian Boyd
5

Aby rozszerzyć odpowiedź Warnera: strona CAcert Vhost Task Force porównuje kilka metod używania wielu domen na jednym serwerze. Osobiście używam wskazania nazwy serwera .

użytkownik1686
źródło
Jak radzisz sobie z użytkownikami systemu Windows XP, Androidem, Blackberry itp.?
thomasrutter
3

Krótka odpowiedź: nie

HTTP jest enkapsulowany w SSL , więc wszelkie informacje o żądaniu są niedostępne do momentu nawiązania połączenia. Dlatego dopóki klient nie otrzyma certyfikatu . Nie ma możliwości korzystania z nagłówków ani innych zaszyfrowanych informacji, ponieważ są one nadal niedostępne.

EDYCJA: jest to prawdą, jeśli chcesz obecnie być w wielu przeglądarkach i w pełni przenośny. Jak powiedzieli inni, pojawiły się nowe metody, które umożliwią to w najbliższej przyszłości.

drAlberT
źródło
1

czy te informacje są dostępne dopiero po ustanowieniu połączenia SSL?

Poprawny. Połączenie SSL jest ustanawiane przed wysłaniem dowolnej części żądania HTTP (łącznie z nagłówkiem hosta).

Richard
źródło
2
To nie jest już w pełni dokładne.
Warner