Kłódka w przeglądarce — co za nią stoi?
Każdy widział małą ikonę kłódki obok adresu strony w przeglądarce. Oznacza ona, że połączenie między przeglądarką a serwerem jest szyfrowane za pomocą protokołu HTTPS. Ale co dokładnie się dzieje pod spodem? Jak to wpływa na bezpieczeństwo? I czy naprawdę każda strona tego potrzebuje?
Odpowiedź na ostatnie pytanie jest prosta: tak, w 2024 roku każda strona powinna używać HTTPS. Nie tylko sklepy internetowe czy banki — dosłownie każda strona, włącznie z prostym blogiem firmowym. Wyjaśnimy dlaczego.
Jak działa SSL/TLS
SSL (Secure Sockets Layer) to protokół kryptograficzny zapewniający bezpieczną komunikację w internecie. Choć nazwa SSL jest nadal powszechnie używana, w rzeczywistości korzystamy dziś z jego następcy — TLS (Transport Layer Security), obecnie w wersji 1.3.
Proces nawiązywania bezpiecznego połączenia (tzw. TLS handshake) wygląda w uproszczeniu tak:
- Przeglądarka łączy się z serwerem i prosi o bezpieczne połączenie
- Serwer wysyła swój certyfikat SSL zawierający klucz publiczny i informacje o tożsamości
- Przeglądarka weryfikuje certyfikat — sprawdza, czy został wystawiony przez zaufany urząd certyfikacji (CA), czy nie wygasł i czy pasuje do domeny
- Uzgadniany jest klucz sesji — za pomocą kryptografii asymetrycznej obie strony ustalają wspólny klucz symetryczny
- Komunikacja jest szyfrowana — od tego momentu wszystkie dane przesyłane między przeglądarką a serwerem są zaszyfrowane kluczem sesji
Cały ten proces trwa ułamki sekundy i jest niewidoczny dla użytkownika. W TLS 1.3 handshake został skrócony do jednej wymiany pakietów (1-RTT), co znacząco poprawiło wydajność.
Trzy filary HTTPS
HTTPS zapewnia trzy fundamentalne gwarancje:
- Poufność — nikt podsłuchujący ruch sieciowy (np. w publicznym Wi-Fi) nie może odczytać przesyłanych danych
- Integralność — dane nie mogą być modyfikowane w trakcie transmisji bez wykrycia
- Uwierzytelnienie — użytkownik ma pewność, że komunikuje się z prawdziwym serwerem, a nie z podstawioną stroną
Dlaczego HTTPS jest niezbędne
Bezpieczeństwo użytkowników — nawet jeśli Twoja strona nie zbiera haseł ani danych kart kredytowych, bez HTTPS dostawca internetu (ISP) lub administrator sieci Wi-Fi może modyfikować treść strony — np. wstrzykiwać reklamy. Brzmi abstrakcyjnie? Niektórzy operatorzy naprawdę to robili.
Wymagania przeglądarek — Chrome, Firefox i inne przeglądarki oznaczają strony HTTP jako "Niezabezpieczone". Dla strony firmowej to wizerunkowy problem — klienci mogą stracić zaufanie.
SEO — Google oficjalnie potwierdził, że HTTPS jest czynnikiem rankingowym. Przy porównywalnych stronach ta z HTTPS będzie wyżej w wynikach wyszukiwania.
Funkcjonalność — wiele nowoczesnych API przeglądarek (geolokalizacja, Service Workers, powiadomienia push, HTTP/2) wymaga HTTPS. Bez certyfikatu SSL te funkcje po prostu nie działają.
Formularze kontaktowe — jeśli Twoja strona ma choćby prosty formularz kontaktowy, dane wpisywane przez użytkownika (imię, email, wiadomość) przesyłane bez szyfrowania mogą być przechwycone. RODO wymaga odpowiednich środków ochrony danych osobowych.
Let's Encrypt — darmowe certyfikaty dla wszystkich
Do 2015 roku certyfikaty SSL były płatne (od kilkudziesięciu do kilkuset dolarów rocznie), co było realną barierą dla małych firm i projektów. Let's Encrypt zmienił tę sytuację fundamentalnie.
Let's Encrypt to darmowy, automatyczny i otwarty urząd certyfikacji (CA), wspierany przez Linux Foundation, Mozilla, Google, Cisco i wiele innych organizacji. Wydaje certyfikaty DV (Domain Validation), które potwierdzają, że kontrolujesz daną domenę.
Kluczowe cechy Let's Encrypt:
- Darmowy — bez żadnych ukrytych opłat
- Automatyczny — certyfikaty można odnawiać automatycznie za pomocą narzędzi takich jak Certbot
- Ważność 90 dni — krótszy okres niż tradycyjne certyfikaty, ale automatyczne odnawianie eliminuje problem wygasania
- Zaufany — uznawany przez wszystkie główne przeglądarki i systemy operacyjne
Podstawowa konfiguracja z Certbotem sprowadza się do jednego polecenia:
certbot --nginx -d example.com -d www.example.com
Certbot automatycznie pobiera certyfikat, konfiguruje Nginx i ustawia zadanie cron do odnawiania.
Rodzaje certyfikatów SSL
- DV (Domain Validation) — potwierdza kontrolę nad domeną. Wystarczający dla większości stron. To właśnie ten typ oferuje Let's Encrypt
- OV (Organization Validation) — dodatkowo weryfikuje tożsamość organizacji. Wymaga kontaktu z urzędem certyfikacji
- EV (Extended Validation) — najwyższy poziom weryfikacji. Kiedyś wyróżniany zielonym paskiem w przeglądarce, dziś wizualnie niemal nieodróżnialny od DV
Dla zdecydowanej większości stron firmowych certyfikat DV od Let's Encrypt jest w pełni wystarczający.
Konfiguracja TLS — najlepsze praktyki
Sam certyfikat to nie wszystko. Ważna jest też konfiguracja serwera:
- Używaj TLS 1.2 i 1.3 — wyłącz starsze wersje (SSL 3.0, TLS 1.0, TLS 1.1), które mają znane podatności
- HSTS (HTTP Strict Transport Security) — nagłówek informujący przeglądarkę, żeby zawsze używała HTTPS dla danej domeny
- Przekierowanie HTTP na HTTPS — każde żądanie HTTP powinno być automatycznie przekierowywane na HTTPS (kod 301)
- Silne szyfry — konfiguracja zestawu szyfrów (cipher suite) zgodnie z aktualnymi rekomendacjami
Narzędzie SSL Labs Server Test (ssllabs.com/ssltest) pozwala sprawdzić konfigurację TLS swojego serwera i otrzymać ocenę od A+ do F wraz z konkretnymi rekomendacjami.
Podsumowanie
HTTPS nie jest już opcjonalnym dodatkiem — to fundament bezpiecznej i wiarygodnej obecności w internecie. Dzięki Let's Encrypt koszt nie jest barierą, a konfiguracja z narzędziami takimi jak Certbot jest prosta i automatyczna. Jeśli Twoja strona nadal działa na HTTP, migracja na HTTPS powinna być jednym z pierwszych kroków na liście priorytetów.