HTTPS/SSL i bezpieczeństwo witryny
Czym jest HTTPS/SSL?
HTTPS (HTTP Secure) to protokół szyfrujący wymianę danych między stroną internetową a przeglądarką użytkownika. Szyfrowanie to jest zapewniane przez certyfikat SSL/TLS posiadany przez stronę; certyfikat ten działa jak cyfrowy dokument potwierdzający tożsamość strony w przeglądarce. Ikona kłódki w pasku adresu przeglądarki wskazuje, że połączenie jest szyfrowane, a certyfikat jest ważny.
Dane przesyłane przez protokół HTTP są przekazywane w postaci zwykłego tekstu (plaintext), co oznacza, że osoba trzecia znajdująca się w tej samej sieci (np. w publicznej sieci Wi-Fi) może je odczytać. Protokół HTTPS szyfruje te dane, dzięki czemu są one czytelne wyłącznie dla nadawcy i odbiorcy.
Certyfikaty SSL są zazwyczaj ważne przez określony czas (np. rok) i po upływie tego terminu wymagają odnowienia; obecnie wielu dostawców usług hostingowych zautomatyzowało ten proces, zapewniając automatyczne odnawianie certyfikatu, co ogranicza konieczność ręcznego monitorowania.
Dlaczego jest to ważne?
Protokół HTTPS zapewnia ochronę danych użytkowników (dane wprowadzone w formularzach, informacje o sesji, dane płatnicze) przed atakami typu „man-in-the-middle”. Google traktuje stosowanie protokołu HTTPS jako niewielki czynnik rankingowy, a przeglądarki wyświetlają ostrzeżenie „Nie jest bezpieczne” w przypadku stron korzystających z protokołu HTTP; ma to bezpośredni wpływ na zaufanie użytkowników.
Niezabezpieczona strona zmniejsza chęć odwiedzających do pozostania na niej; zwłaszcza użytkownicy wypełniający formularze lub dokonujący płatności mogą opuścić stronę bez zakończenia transakcji, gdy zobaczą ostrzeżenie „Nie jest bezpieczne”. Jest to problem zaufania, który bezpośrednio wpływa na współczynnik konwersji.
Ponadto większość nowoczesnych funkcji przeglądarek (np. usługi lokalizacyjne, powiadomienia, niektóre interfejsy API płatności) działa wyłącznie przez protokół HTTPS; strona pozostająca przy protokole HTTP nie może w ogóle korzystać z tych funkcji i staje się coraz bardziej ograniczona pod względem technicznym.
Jak to naprawić?
- Zainstaluj na swojej witrynie ważny certyfikat SSL i zapewnij automatyczne odnawianie, które zapobiegnie wygaśnięciu certyfikatu.
- Przekieruj wszystkie żądania HTTP do wersji HTTPS za pomocą przekierowania 301.
- Usuń ostrzeżenia o mieszanej zawartości (mixed content): upewnij się, że wszystkie pliki graficzne, skrypty i pliki CSS na stronie są ładowane przez protokół HTTPS; w przeciwnym razie przeglądarka może oznaczyć stronę jako „częściowo bezpieczną”.
- Jeśli to możliwe, dodaj nagłówek HSTS (HTTP Strict Transport Security), aby wymusić na przeglądarce zawsze łączenie się z witryną przez HTTPS.
- Zredukuj łańcuchy przekierowań (takie jak HTTP → HTTPS → www → non-www, czyli wiele przekierowań następujących po sobie) do jednego kroku; każde dodatkowe przekierowanie powoduje niewielkie opóźnienie w czasie ładowania strony.
- Sprawdź, czy zasoby dostarczane przez usługi stron trzecich (takie jak wizualna sieć CDN, dostawca formularzy, widget czatu) są również udostępniane przez protokół HTTPS; są one często pomijanym źródłem problemu mieszanej zawartości.
Przykład
# .htaccess örneği
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Zły przykład: po przejściu na protokół HTTPS zapomnienie o aktualizacji starych <img src="http://ornek.com/logo.png"> absolutne linki HTTP na stronie; powoduje to wyświetlenie ostrzeżenia o mieszanej zawartości w przeglądarce, nawet jeśli strona ogólnie wydaje się bezpieczna.
Często popełniane błędy
- Pozostawienie otwartej wersji HTTP bez jej wyłączenia; w ten sposób strona pozostaje dostępna zarówno przez HTTP, jak i HTTPS, a treść jest powielana pod dwoma różnymi adresami.
- Pozostawienie na stronie obrazów lub skryptów ładowanych nadal przez HTTP, mimo że strona działa pod protokołem HTTPS (mieszana zawartość).
- Dopuszczenie do wygaśnięcia certyfikatu SSL; w takim przypadku przeglądarka może oznaczyć witrynę jako całkowicie niedostępną.
- Tworzenie niepotrzebnych łańcuchów przekierowań składających się z wielu kroków.
- Uzyskanie certyfikatu wyłącznie dla domeny głównej i pominięcie subdomen (np. blog.ornek.com).
- Nadal używanie starych adresów HTTP w linkach wewnętrznych (menu, stopka, linki wewnętrzne); powoduje to niepotrzebne przekierowanie 301 przy każdym kliknięciu i nieznacznie spowalnia ładowanie strony.
- Nadal odwoływanie się do starych adresów HTTP w mapie witryny i tagach kanonicznych; wysyła to sprzeczne sygnały do wyszukiwarek.
- Przypadkowe przeniesienie certyfikatu z podpisem własnym (self-signed), używanego w środowisku lokalnym (localhost), do konfiguracji środowiska produkcyjnego; przeglądarki nie uznają tego typu certyfikatów za wiarygodne.
- Raport Seoraporu.co w sekcji ustaleń technicznych w pierwszej kolejności wskazuje na brak protokołu HTTPS lub ostrzeżenia o mieszanej zawartości, ponieważ mają one wpływ zarówno na zaufanie, jak i na wydajność.