Protokół HTTP i szyfrowany HTTPS – żądanie i odpowiedź, kody statusu, budowa adresu URL, handshake TLS, rola certyfikatu oraz porty 80 i 443.
HTTP to protokół, którym przeglądarka rozmawia z serwerem strony. Działa w modelu żądanie–odpowiedź: przeglądarka prosi o zasób, serwer odsyła go razem z kodem statusu. Jest bezstanowy, czyli każde żądanie jest niezależne od poprzednich.
Problem HTTP polega na tym, że wszystko leci otwartym tekstem. Każdy, kto ma dostęp do sieci po drodze, może odczytać przesyłane treści – w tym hasła i numery kart.
HTTPS to ten sam HTTP, tylko opakowany w szyfrowanie SSL/TLS. Treść jest nieczytelna dla postronnych, a dodatkowo certyfikat serwera potwierdza, że rozmawiamy z tym, z kim myślimy. Dlatego przeglądarki oznaczają strony bez HTTPS jako niebezpieczne.
Cztery zasady, które wystarczą do większości pytań:
To, że przeglądarka wie, pod jaki adres IP wysłać żądanie, jest zasługą osobnego protokołu – opisuje go hasło DNS. Sam podział na proszącego i odpowiadającego omawia hasło Model klient-serwer.
Adres, który wpisujesz w pasku przeglądarki, to URL. Ma stałą budowę – w https://sklep.example.pl/koszyk/zamowienie.html kolejno występują:
https – schemat, czyli protokół. On decyduje o porcie: http to 80, https to 443.sklep.example.pl – host, nazwa domeny serwera. To ją przeglądarka zamienia na adres IP./koszyk/zamowienie.html – ścieżka do konkretnego zasobu na tym serwerze.Dalej mogą wystąpić jeszcze dwie części: po znaku zapytania parametry (?strona=2), a po znaku # kotwica wskazująca miejsce w dokumencie. Kotwica nigdy nie jest wysyłana do serwera – obsługuje ją sama przeglądarka.
Samo żądanie ma metodę. GET prosi o zasób i nie zmienia niczego na serwerze; jego parametry są widoczne w adresie. POST wysyła dane w treści żądania, dlatego używa się go do formularzy z hasłem czy zamówieniem. Serwer odpowiada kodem statusu: trzycyfrową liczbą, której pierwsza cyfra mówi o rodzaju odpowiedzi (2 – sukces, 3 – przekierowanie, 4 – błąd po stronie klienta, 5 – błąd po stronie serwera).
Nawiązanie połączenia HTTPS wygląda w skrócie tak:
Ta wymiana nazywa się handshake i odbywa się raz, przed pierwszym żądaniem HTTP. Ciekawostka, która pomaga zrozumieć całość: sama transmisja jest szyfrowana symetrycznie, bo to szybkie. Szyfrowanie asymetryczne służy tylko do bezpiecznego ustalenia tego wspólnego klucza – oba rodzaje porównuje hasło Szyfrowanie symetryczne i asymetryczne. Jak działa sam podpis pod certyfikatem i czym jest centrum certyfikacji jako instytucja, tłumaczy hasło Podpis cyfrowy.
Nazwy SSL i TLS oznaczają w praktyce to samo miejsce w architekturze, ale różne pokolenia. SSL w wersjach 2.0 i 3.0 został wycofany jako podatny na ataki; jego następcą jest TLS, dziś w wersjach 1.2 i 1.3. Skrót SSL został w potocznym języku (mówi się „certyfikat SSL”), choć technicznie działa TLS.
| Kod lub sytuacja | Znaczenie | Kiedy to zobaczysz |
|---|---|---|
| 200 | OK, żądanie się powiodło | strona otwiera się normalnie; kodu nie widać, bo przeglądarka po prostu pokazuje treść |
| 301 | Moved Permanently, przeniesiony na stałe | stary adres podstrony kieruje na nowy; przeglądarka zapamiętuje zmianę na przyszłość |
| 302 | Found, przeniesiony tymczasowo | przekierowanie na stronę logowania albo na czas przerwy technicznej |
| 400 | Bad Request, żądanie źle zbudowane | serwer nie rozumie tego, co przysłał klient, np. uszkodzonego formularza |
| 401 | Unauthorized, wymagane uwierzytelnienie | zasób jest za logowaniem, a hasło nie zostało podane albo jest błędne |
| 403 | Forbidden, dostęp zabroniony | serwer wie, kto pyta, i mimo to odmawia, np. przy próbie wejścia do katalogu z plikami |
| 404 | Not Found, nie znaleziono zasobu | literówka w adresie podstrony albo plik usunięty z serwera |
| 500 | Internal Server Error, błąd wewnętrzny serwera | skrypt na serwerze się wysypał; wina leży po stronie serwera, nie przeglądarki |
| 503 | Service Unavailable, usługa niedostępna | serwer przeciążony albo wyłączony na czas prac serwisowych |
| kłódka jest, a strona wyłudza dane | połączenie szyfrowane, właściciel nieuczciwy | oszust też może mieć certyfikat dla swojej domeny; kłódka nie ocenia zamiarów |
| schemat http w formularzu z hasłem | brak szyfrowania | hasło i login idą otwartym tekstem; przeglądarka ostrzega „Nie jest bezpieczna” |
| ostrzeżenie o certyfikacie | nazwa domeny lub data się nie zgadza | certyfikat wygasł albo wystawiono go dla innej domeny; nie klika się „przejdź dalej” |
| Cecha | HTTP | HTTPS |
|---|---|---|
| Port | 80 | 443 |
| Schemat w adresie | http:// | https:// |
| Szyfrowanie | brak, tekst jawny | SSL/TLS, dziś TLS 1.2 lub 1.3 |
| Certyfikat serwera | niepotrzebny | wymagany, podpisany przez centrum certyfikacji |
| Kłódka w pasku adresu | nie ma, przeglądarka pisze „Nie jest bezpieczna” | jest |
| Co widzi podsłuchujący | całą treść i wysyłane hasła | nazwę domeny, nie widzi treści ani ścieżki |
| Format żądań i kodów statusu | taki sam | taki sam |
| Nazwa angielska | HyperText Transfer Protocol | HyperText Transfer Protocol Secure |
HTTPS traktowany jako inny protokół niż HTTP. To nie są dwa różne języki. HTTPS wysyła dokładnie takie same żądania GET i POST i dostaje takie same kody statusu; różnica polega wyłącznie na tym, że wszystko idzie przez tunel TLS. Zdanie „HTTPS jest szyfrowaną wersją protokołu HTTP” to prawda i tak formułuje je CKE.
Kłódka rozumiana jako gwarancja uczciwości. Certyfikat potwierdza, że domena należy do tego, kto się nią posługuje, i że nikt po drodze nie odczyta ruchu. Nie mówi nic o tym, czy strona sprzedaje prawdziwy towar. Strona wyłudzająca dane może mieć kłódkę – i najczęściej ją ma, bo certyfikaty są darmowe.
Mylenie HTTPS z protokołami, które robią coś zupełnie innego. W arkuszach wraca zestaw zdań, w których HTTPS ma rzekomo pobierać pocztę, przydzielać adresy IP albo obsługiwać system nazw domen. To trzy różne protokoły: pocztę pobiera POP3 lub IMAP, adresy przydziela DHCP, nazwy tłumaczy DNS. HTTPS robi jedno – przenosi strony WWW przez szyfrowane połączenie.
Kod 404 przypisany serwerowi. Cyfra 4 na początku oznacza błąd po stronie klienta: adres wskazuje na coś, czego nie ma. Awaria serwera ma kod z piątki, najczęściej 500 albo 503. Pytanie „strona nie działa, kto zawinił” rozstrzyga się właśnie pierwszą cyfrą kodu.
Port podawany do HTTPS jako 80. Numer wynika ze schematu adresu: http to 80, https to 443. Skoro w adresie jest litera „s”, port jest inny. Zamiana tych dwóch liczb miejscami to najczęstsza pomyłka w zadaniach z portami.
SSL i TLS traktowane jako dwie działające dziś warstwy. SSL został wycofany, w praktyce wszędzie pracuje TLS. Nazwa „certyfikat SSL” jest tylko przyzwyczajeniem językowym. Jeżeli zadanie pyta, co jest nowsze i bezpieczniejsze, odpowiedzią zawsze jest TLS.
Rozbiór adresu https://sklep.example.pl/koszyk/zamowienie.html:
| Fragment adresu | Nazwa części |
|---|---|
| https | schemat, czyli protokół |
| sklep.example.pl | host, czyli nazwa domeny serwera |
| /koszyk/zamowienie.html | ścieżka do zasobu na serwerze |
Uzupełnij tabelę:
| Pytanie | Odpowiedź |
|---|---|
| Na którym porcie działa protokół z tego adresu? | |
| Na którym porcie działa ten sam protokół bez szyfrowania? | |
| Jaki kod odsyła serwer, gdy strona została znaleziona? | |
| Jaki kod oznacza, że zasobu pod tym adresem nie ma? | |
| Jaki kod oznacza trwałe przeniesienie zasobu? | |
| Jaki kod oznacza błąd wewnętrzny serwera? | |
| Jaki dokument potwierdza tożsamość serwera? | |
| Jaka jest dzisiejsza nazwa następcy protokołu SSL? |
Kłódka w pasku adresu mówi, że połączenie jest , a nie że właściciel strony jest . Metoda, którą przeglądarka prosi o samą stronę, to , a metoda wysyłania formularza z hasłem to .
TLS jest nowszą i bezpieczniejszą wersją SSL. Nazwy używa się zamiennie, ale w praktyce wszędzie działa dziś TLS – samo SSL zostało wycofane jako podatne na ataki. Aktualne wersje to TLS 1.2 i TLS 1.3.
To statusy odpowiedzi HTTP. 200 znaczy, że żądanie się powiodło, a 404 – że serwer nie znalazł zasobu pod podanym adresem. Kod 404 wskazuje błąd po stronie klienta, czyli zły adres, a nie awarię serwera.
Ukrywa treść i konkretny adres podstrony, ale sama nazwa domeny jest zwykle widoczna dla dostawcy internetu. Szyfrowanie chroni zawartość, nie sam fakt połączenia.
GET służy do pobrania zasobu i przekazuje parametry w adresie, więc widać je w pasku przeglądarki i w historii. POST wysyła dane w treści żądania, dlatego używa się go do formularzy, logowania i zamówień. Bez HTTPS oba są równie jawne dla podsłuchującego.
Ze schematu (https), hosta (sklep.example.pl) i ścieżki (/koszyk/zamowienie.html). Opcjonalnie dochodzą jeszcze parametry po znaku zapytania oraz kotwica po znaku #, która wskazuje miejsce w dokumencie i nie jest wysyłana do serwera.
Bo coś się nie zgadza: certyfikat wygasł, został wystawiony dla innej domeny albo podpisało go centrum, którego przeglądarka nie zna. Każdy z tych przypadków oznacza, że nie ma pewności, z kim naprawdę rozmawiasz, więc ostrzeżenia się nie klika „na skróty”.
Bezpieczne jest połączenie, nie strona. Kłódka gwarantuje, że nikt po drodze nie odczyta ani nie podmieni przesyłanych danych i że domena jest tą, którą widzisz w adresie. Nie mówi nic o intencjach właściciela – oszust również może wykupić certyfikat dla swojej domeny.
Bo mają różne mocne strony. Szyfrowanie asymetryczne pozwala bezpiecznie ustalić wspólny klucz z kimś, kogo się wcześniej nie znało, ale jest wolne. Symetryczne jest szybkie, lecz wymaga wcześniej uzgodnionego klucza – i dlatego szyfruje dopiero właściwą transmisję. Szczegóły w haśle Szyfrowanie symetryczne i asymetryczne.
Do tego hasła nie mamy jeszcze przypisanych pojedynczych zadań. Cały spis zadań maturalnych z tego działu jest tutaj:
Zagadnienia z tego samego obszaru matury – warto je powtórzyć razem: