HTTP przez chroniony kanał
HTTPS oznacza użycie HTTP przez kanał zabezpieczony protokołem TLS. Schemat URI https informuje klienta, że przed przesłaniem komunikatu HTTP należy ustanowić ochronę transportową. Domyślnym portem dla HTTP przez TLS jest 443.
Metody, kody odpowiedzi i pola HTTP zachowują swoje znaczenie. TLS zmienia sposób przenoszenia komunikatów między punktami końcowymi, a nie semantykę zasobu webowego.
Zakres ochrony
Po ustanowieniu kanału TLS zaszyfrowane są linia żądania, pola nagłówkowe, treść żądania i odpowiedzi oraz pliki przesyłane przez aplikację. Mechanizm integralności pozwala wykryć zmianę danych w drodze.
HTTPS nie ukrywa wszystkich metadanych. Adresy IP, wielkość i czas pakietów oraz informacje potrzebne do zestawienia połączenia mogą pozostać widoczne. Ochrona kanału nie usuwa podatności aplikacji po odszyfrowaniu danych.
Weryfikacja certyfikatu serwera
Klient sprawdza łańcuch podpisów prowadzący do zaufanego urzędu, okres ważności certyfikatu, dopuszczone zastosowanie klucza i zgodność nazwy serwera. Nazwy DNS znajdują się w rozszerzeniu Subject Alternative Name.
Poprawny podpis nie wystarcza, jeżeli certyfikat dotyczy innej nazwy. Ręczne zaakceptowanie ostrzeżenia usuwa ochronę przed aktywnym pośrednikiem. Serwer powinien wysłać certyfikat końcowy oraz potrzebne certyfikaty pośrednie, bez certyfikatu głównego przechowywanego przez klienta.
Przekierowanie do HTTPS i HSTS
Odpowiedź przekierowująca z HTTP do HTTPS zmienia docelowy URI, ale pierwsze żądanie HTTP jest wysyłane bez ochrony. Napastnik obecny w ścieżce może zmodyfikować przekierowanie albo zatrzymać użytkownika przy HTTP.
zapisuje obowiązek używania HTTPS na czas określony przez max-age. Dyrektywa includeSubDomains rozszerza politykę na poddomeny. Lista preload może chronić pierwsze połączenie, lecz wymaga spełnienia zasad programu przeglądarek i ostrożnego zarządzania domeną.
Zawartość mieszana i bezpieczne ciasteczka
Zawartość mieszana występuje, gdy dokument HTTPS pobiera skrypt, arkusz stylów, obraz lub inne dane przez HTTP. Aktywny zasób HTTP może zmienić działanie całej strony. Przeglądarki blokują szczególnie niebezpieczne kategorie albo próbują podnieść schemat do HTTPS.
Atrybut Secure ogranicza wysyłanie ciasteczka do chronionego transportu. HttpOnly blokuje dostęp z JavaScript, a SameSite ogranicza wybrane żądania między witrynami. Są to odrębne mechanizmy i nie zastępują HTTPS.
Terminacja TLS na serwerze pośredniczącym
TLS może kończyć się na reverse proxy, systemie równoważenia obciążenia albo bramie CDN. Odcinek od pośrednika do aplikacji staje się wtedy osobnym połączeniem. Powinien być chroniony odpowiednio do granic zaufania i modelu zagrożeń.
Aplikacja często otrzymuje informację o pierwotnym schemacie i adresie klienta w polach przekazywanych przez zaufany proxy. Bez listy zaufanych pośredników napastnik może sam podać takie pole i wpłynąć na generowane przekierowania, logi albo reguły bezpieczeństwa.
HTTP/2, HTTP/3 i ALPN
Przeglądarki używają HTTP/2 najczęściej w kanale TLS. Rozszerzenie ALPN pozwala uzgodnić protokół aplikacyjny podczas uzgadniania TLS, bez dodatkowej wymiany po ustanowieniu połączenia.
HTTP/3 działa przez QUIC nad UDP. QUIC integruje mechanizmy uzgadniania TLS 1.3, ale nie tworzy klasycznego stosu TLS nad TCP. Ochrona kryptograficzna obejmuje dane HTTP/3 i znaczną część informacji sterujących QUIC.
Kontrola wdrożenia HTTPS
- Certyfikat obejmuje wszystkie używane nazwy i ma pełny łańcuch pośredni.
- HTTP przekierowuje do kanonicznego URI HTTPS bez tworzenia pętli.
- HSTS jest włączane dopiero po sprawdzeniu wszystkich poddomen objętych polityką.
- Strona nie pobiera aktywnych zasobów przez HTTP.
- Ciasteczka sesyjne mają atrybut Secure oraz pozostałe atrybuty zgodne z zastosowaniem.
- Pośredniki i aplikacja prawidłowo ustalają pierwotny schemat żądania.
- Monitorowane są termin ważności certyfikatu i błędy uzgadniania.
Granice odpowiedzialności HTTPS
HTTPS uwierzytelnia punkt końcowy zgodnie z certyfikatem i chroni transmisję. Nie potwierdza prawdziwości publikowanej informacji, nie zapobiega błędom autoryzacji i nie chroni danych zapisanych po stronie serwera. Szczegóły rekordów, kluczy i komunikatów uzgadniania należą do protokołu TLS.