Tak, ale są pewne zastrzeżenia.
Odbywa się to poprzez Wskazanie nazwy serwera, rozszerzenie do Transport Layer Security.
Co to jest wskazanie nazwy serwera?
Wskazanie nazwy serwera ( RFC 6066 ; przestarzałe RFC 4366 , RFC 3546 ) jest rozszerzeniem Transport Layer Security, które pozwala klientowi powiedzieć serwerowi nazwę hosta, do którego próbuje dotrzeć.
SNI jest zgodny z TLS 1.0 i wyższym zgodnie ze specyfikacją, ale implementacje mogą się różnić (patrz poniżej). Nie można go używać z protokołem SSL, dlatego połączenie SNI musi negocjować TLS (patrz RFC 4346 dodatek E ). Zwykle dzieje się to automatycznie w przypadku obsługiwanego oprogramowania.
Dlaczego SNI jest potrzebny?
W zwykłym połączeniu HTTP przeglądarka informuje serwer o nazwie hosta serwera, do którego próbuje dotrzeć, używając Host:
nagłówka. Umożliwia to serwerowi sieciowemu na jednym adresie IP udostępnianie treści dla wielu nazw hostów, co jest powszechnie znane jako wirtualny hosting oparty na nazwach .
Alternatywą jest przypisanie unikalnych adresów IP do każdej obsługiwanej nazwy hosta. Robiono to powszechnie w pierwszych dniach Internetu, zanim powszechnie wiadomo, że skończy się adres IP i rozpoczną się środki ochronne, i nadal tak jest w przypadku wirtualnych hostów SSL (nie używając SNI).
Ponieważ ta metoda przesyłania nazwy hosta wymaga nawiązania połączenia, nie działa z połączeniami SSL / TLS. Do czasu ustanowienia bezpiecznego połączenia serwer WWW musi już wiedzieć, jaką nazwę hosta będzie obsługiwał na kliencie, ponieważ sam serwer WWW ustanawia bezpieczne połączenie.
SNI rozwiązuje ten problem, ponieważ klient przesyła nazwę hosta w ramach negocjacji TLS, dzięki czemu serwer już wie, który host wirtualny powinien zostać użyty do obsługi połączenia. Serwer może następnie użyć certyfikatu i konfiguracji dla poprawnego wirtualnego hosta.
Dlaczego nie użyć różnych adresów IP?
Host:
Nagłówek HTTP został zdefiniowany, aby umożliwić obsługę więcej niż jednego hosta WWW z jednego adresu IP z powodu braku adresów IPv4, uznanego za problem już w połowie lat dziewięćdziesiątych. We współdzielonych środowiskach hostingowych setki unikalnych, niepowiązanych stron internetowych mogą być obsługiwane przy użyciu jednego adresu IP w ten sposób, oszczędzając przestrzeń adresową.
Współdzielone środowiska hostingowe odkryły następnie, że największym konsumentem przestrzeni adresowej IP była potrzeba posiadania bezpiecznych stron internetowych w celu posiadania unikalnych adresów IP, co spowodowało potrzebę SNI jako środka zatrzymującego lukę w drodze do IPv6. Obecnie czasami trudno jest uzyskać zaledwie 5 adresów IP (/ 29) bez znacznego uzasadnienia, co często powoduje opóźnienia w wdrożeniu.
Wraz z pojawieniem się IPv6 takie techniki zachowania adresów nie są już konieczne, ponieważ do jednego hosta można przypisać więcej adresów IPv6 niż cały Internet obecnie, ale techniki te prawdopodobnie będą nadal używane w dalekiej przyszłości do obsługi starszych IPv4 znajomości.
Ostrzeżenia
Niektóre kombinacje systemu operacyjnego / przeglądarki nie obsługują SNI (patrz poniżej), więc używanie SNI nie jest odpowiednie dla wszystkich sytuacji. Witryny atakujące takie kombinacje system / przeglądarka musiałyby zrezygnować z SNI i nadal używać unikalnych adresów IP dla każdego wirtualnego hosta.
Na szczególną uwagę, żadna wersja Internet Explorera na Windows XP nie obsługuje SNI. Ponieważ ta kombinacja nadal stanowi znaczną (ale stale malejącą; około 16% ruchu internetowego w grudniu 2012 r. Według NetMarketShare) część ruchu internetowego, SNI byłby nieodpowiedni dla witryny kierowanej do tych grup użytkowników.
Wsparcie
Wiele powszechnie używanych pakietów oprogramowania obsługuje SNI.
(Pominięcie tej listy niekoniecznie oznacza brak wsparcia; oznacza to, że było ograniczenie, ile mógłbym wpisać, lub nie mogłem szybko znaleźć informacji w wyszukiwaniu. Jeśli Twojego pakietu oprogramowania nie ma na liście, wyszukiwanie jego nazwa plus sni
powinna ujawniać, czy istnieje wsparcie i jak je skonfigurować).
Obsługa bibliotek
Większość pakietów zależy od zewnętrznej biblioteki zapewniającej obsługę SSL / TLS.
- GNU TLS
- JSSE (Oracle Java) 7 lub nowszy, tylko jako klient
- libcurl 7.18.1 lub wyższy
- NSS 3.1.1 lub nowszy
- OpenSSL 0.9.8j lub wyższy
- OpenSSL 0.9.8f lub wyższy, z flagami konfiguracji
- Qt 4,8 lub wyższy
Obsługa serwera
Większość aktualnych wersji popularnego oprogramowania serwerowego obsługuje SNI. Instrukcje instalacji są dostępne dla większości z nich:
Obsługa klienta
Większość obecnych przeglądarek internetowych i agentów użytkownika wiersza poleceń obsługuje SNI.
Pulpit
- Chrome 5 lub nowszy
- Chrome 6 lub nowszy w systemie Windows XP
- Firefox 2 lub nowszy
- Internet Explorer 7 lub nowszy, działający w systemie Windows Vista / Server 2008 lub nowszym
- Internet Explorer w systemie Windows XP nie obsługuje SNI niezależnie od wersji IE
- Konqueror 4.7 lub nowszy
- Opera 8 lub nowsza (może wymagać włączenia TLS 1.1 do działania)
- Safari 3.0 w systemie Windows Vista / Server 2008 lub nowszym albo Mac OS X 10.5.6 lub nowszym
mobilny
- Przeglądarka Android w wersji 3.0 Honeycomb lub wyższej
- iOS Safari na iOS 4 lub nowszym
- Windows Phone 7 lub nowszy
Wiersz poleceń
- cURL 7.18.1 lub wyższy
- wget 1.14 lub wyższy (Dystrybucje mogły mieć backportową łatkę do obsługi SNI)
Bez wsparcia
- Przeglądarka BlackBerry
- Internet Explorer (dowolna wersja) w systemie Windows XP
(Uwaga: niektóre informacje na temat tej odpowiedzi uzyskano z Wikipedii ).