Dlaczego dedykowany adres IP nadal jest wymagany dla SSL?
#apache #ssl #certyfikat #sniUruchomienie certyfikatu SSL (czyli obsługa https:// w nazwie domeny) na współdzielonym adresie IP jest możliwe od wielu lat dzięki wsparciu technologi SNI, która umożliwia obsługę wielu domen zabezpieczonych https pod jednym adresem IP. Kruczkiem jest fakt, co się stanie jeśli nasz lub innego klienta certyfikat wygaśnie…
W sytuacji, w której certyfikat wygaśnie, serwer może wyświetlić odwiedzającemu inną domenę, która także posiada certyfikat SSL zainstalowany na tym samym współdzielonym adresie IP.
Jest to niedoskonałość technologii SNI, która odpowiada za możliwość wyświetlenia na jednym IP wielu domen na SSL. W czasach, kiedy nie było wsparcia dla SNI, problem nie występował - ponieważ, nie było możliwości technicznej aby jeden adres IP miał kilka różnych domen z zainstalowanymi certyfikatami SSL.
Zaprezentujmy jednak jak wygląda komunikacja ze stroną WWW, zarówno z i bez certyfikatu SSL. Pozwoli to na łatwiejsze zrozumienie problemu.
Komunikacja ze stroną bez HTTPS
Poniżej uproszczony i skrócony schemat działania przeglądarki czy innej aplikacji, która chce pobrać zawartość strony
- Wpisujemy w przeglądarce adres strony np. http://hostit.pl/hosting/
- Przeglądarka pyta się o adres IP dla serwera, na którym jest zaparkowana domena hostit.pl, powiedzmy otrzymujemy odpowiedź 192.168.0.1
- Przeglądarka łączy się z… nie domeną, a z adresem IP, który zwrócił serwer DNS, czyli 192.168.0.1
- Serwer odbiera połączenie i mówi, ok jestem gotów, czym mogę służyć?
- Przeglądarka prosi więc go o nasz adres; wysyła poniższe zapytanie gołym tekstem która wygląda dosłownie tak:
GET /hosting/ HTTP/1.1
Host: hostit.pl
User-Agent: Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0
Tłumacząc to z serwerowego na Polski; przeglądarka prosi: podaj mi zawartość URL /hosting/ w domenie hostit.pl wykorzystując wersję 1.1 protokołu HTTP. Acha, dla Twojej wiadomości korzystam z przeglądarki Firefox na Androidzie.
Serwer zwraca zawartość strony do wyświetlenia w przeglądarce.
Komunikacja ze stroną z wykorzystaniem HTTPS
Teraz odwróćmy nieco sytuację, chcemy wejść na tą samą stronę wykorzystując połączenie szyfrowane, czyli poprzez adres https://hostit.pl
- Wpisujemy w przeglądarce adres strony np. https://hostit.pl/hosting/ (https oznacza, że chcemy aby połączenie było szyfrowane)
- Przeglądarka pyta się o adres IP dla domeny hostit.pl, odpowiedź 192.168.0.1
- Przeglądarka łączy się z serwerem działającym pod adresem IP 192.168.0.1 pod portem zarezerwowanym dla połączeń SSL (443)
- Serwer odbiera połączenie i mówi, ok jestem gotów, czym mogę służyć?
- Przeglądarka prosi więc go o nasz adres; wysyła zapytanie w formie zakodowanej które będzie wyglądało mniej więcej tak
Teraz serwer próbuje odkodować zakodowaną informację, problem w tym że jeśli nie zainstalowałeś prawidłowo certyfikatu lub po prostu wygasł. Wiadomość nie zostanie odkodowana i serwer nie będzie znał treści twojego zapytania (nawet adresu podstrony). Jedyne co będzie znał to adres IP z którym się łączysz. Odszuka więc najbliższą stronę „stojącą” na tym IP z włączonym aktualnym certyfikatem SSL i zwróci Ci jej zawartość.
Dla firmy? Certyfikat SSL tylko z dedykowanym IP
Jak widzisz korzystanie z certyfikatu SSL bez dedykowanego adresu IP nie ustrzeże cię przed pomyłkami innych. Jeśli posiadasz aktywny certyfikat SSL jednak nie masz dedykowanego adresu IP, to Twoja strona może się pokazać pod adresem innej domeny, która także korzysta z tego samego współdzielonego adresu IP jednak jej certyfikat wygasł lub jest błędny.
W związku z tym nasze stanowisko jest takie, że dedykowany adres IP powinien być obowiązkowy w przypadku instalacji certyfikatu SSL. Ostateczną decyzję postawiamy Tobie.