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:

  1. Przeglądarka łączy się z serwerem i prosi o bezpieczne połączenie
  2. Serwer wysyła swój certyfikat SSL zawierający klucz publiczny i informacje o tożsamości
  3. Przeglądarka weryfikuje certyfikat — sprawdza, czy został wystawiony przez zaufany urząd certyfikacji (CA), czy nie wygasł i czy pasuje do domeny
  4. Uzgadniany jest klucz sesji — za pomocą kryptografii asymetrycznej obie strony ustalają wspólny klucz symetryczny
  5. 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.