HTTPS (HyperText Transfer Protocol Secure) to po prostu HTTP opakowane w warstwę szyfrującą TLS (dawniej SSL). Zamiast wysyłać żądania i odpowiedzi czystym tekstem, przeglądarka i serwer najpierw uzgadniają wspólny, szyfrowany kanał, a dopiero potem przez niego rozmawiają. Domyślnie chodzi po porcie 443 (zwykłe HTTP siedzi na 80). Dla użytkownika różnica to ta kłódka w pasku adresu i prefiks https:// — dla Ciebie jako programisty to gwarancja trzech rzeczy: poufności, integralności i uwierzytelnienia serwera.
Co właściwie daje TLS
TLS robi trzy zadania naraz. Szyfruje ruch, więc ktoś podsłuchujący sieć (np. na publicznym Wi-Fi) widzi tylko szum zamiast Twojego hasła. Pilnuje integralności — jeśli ktoś po drodze zmieni choć bajt, połączenie się sypie zamiast przepuścić zmanipulowane dane. I uwierzytelnia serwer przez certyfikat podpisany przez zaufane CA (Certificate Authority), żebyś rozmawiał z prawdziwym bankiem, a nie z podstawioną stroną.
Sam handshake (w TLS 1.3 ogarnięty w jednym round-tripie) ustala klucze sesyjne. Ciekawostka: certyfikat i asymetryczna kryptografia służą głównie do bezpiecznego wymienienia klucza — samą transmisję szyfruje już szybki algorytm symetryczny.
Z życia: jak to sprawdzić
Najprostszy darmowy certyfikat ogarniesz przez Let’s Encrypt i certbot. A jeśli chcesz podejrzeć, co serwer naprawdę zwraca, odpalasz:
curl -vI https://example.com— pokaże handshake i nagłówki,openssl s_client -connect example.com:443— wyrzuci pełny łańcuch certyfikatów i datę ważności.
Częste pułapki i mity
Mit: „kłódka = strona bezpieczna”. Nieprawda — kłódka znaczy tylko, że połączenie jest szyfrowane. Phishingowa strona też może mieć ważny certyfikat. HTTPS chroni kanał, nie intencje właściciela.
Na co uważać w praktyce: wygasłe certyfikaty (klasyk, który kładzie produkcję w weekend), mieszanie zasobów (mixed content — HTTPS-owa strona ładująca skrypt po HTTP), oraz brak nagłówka HSTS, który wymusza HTTPS i blokuje próby downgrade’u do gołego HTTP.
Pojęcia powiązane
TLS, SSL, certyfikat X.509, Let’s Encrypt, CA, HSTS, port 443, handshake, mixed content, HTTP/2.