HTTPS

HTTPS (ang. Hypertext Transfer Protocol Secure) – protokół HTTP chroniony przy pomocy szyfrowania protokołu TLS (dawniej SSL) i ustandaryzowany w dokumencie RFC 2818 pod rzadziej używaną nazwą HTTP Over TLS[1]. Szyfrowanie komunikacji ma zapobiegać jej przechwytywaniu między klientem i serwerem czy wręcz modyfikacji przesyłanych danych, zanim dotrą do celu[1].

W przeciwieństwie do niezabezpieczonego HTTP, którego serwery nasłuchują na porcie 80[2], serwery obsługujące HTTPS nasłuchują domyślnie na porcie 443 protokołu TCP[1]. Adresy URL protokołu zaczynają się od https://, podczas gdy adresy niezabezpieczonego HTTP od http://[1].

Ograniczenia i rozpowszechnienie

Protokół HTTP realizuje się warstwę wyżej od standardu TLS, który znajduje się na warstwie prezentacji. Najpierw następuje więc wymiana kluczy TLS, a dopiero później możliwe jest przesłanie żądania HTTP. Historycznie uniemożliwiało to serwerom obsługiwanie wielu domen (bądź poddomen) z różnymi certyfikatami przy użyciu jednego adresu IP. Było to spowodowane brakiem informacji o tym, którego certyfikatu X.509 i klucza prywatnego należy użyć do odszyfrowania danych, ponieważ nagłówek HTTP Host jest przekazywany wewnątrz zaszyfrowanej części zapytania (którego z kolei nie można odszyfrować, nie znając domeny). Jedynym obejściem było użycie wspólnego certyfikatu dla wszystkich domen. Problem został zażegnany poprzez wprowadzenie do TLS rozszerzenia SNI (ang. Server Name Indication), które przechowuje informację o domenie w nieszyfrowanej postaci[3].

    Procent domen w Internecie serwujących strony domyślnie po HTTPS na przestrzeni lat
    Źródło: W3Tech, wrzesień 2022[4]

W starszych wersjach HTTP szyfrowanie połączenia było rozszerzeniem protokołu. Począwszy od HTTP/2 mimo braku takiego wymogu w RFC[5], szyfrowanie stało się de facto wymogiem protokołu ze względu na stan implementacji w najpopularniejszych silnikach przeglądarek internetowych[6].

Zobacz też

  • S-HTTP

Przypisy

  1. a b c d HTTP Over TLS, RFC 2818, IETF, maj 2000, DOI10.17487/RFC2818, ISSN 2070-1721, OCLC 943595667 (ang.).
  2. R. Fielding i inni, Hypertext Transfer Protocol -- HTTP/1.1, RFC 2616, IETF, czerwiec 1999, DOI10.17487/RFC2616, ISSN 2070-1721, OCLC 943595667 (ang.).
  3. Rozszerzenie to łączy się jednak ze szczególnymi implikacjami prywatności i bezpieczeństwa, bowiem pozwala na wgląd w szyfrowany ruch sieciowy. Proxy posiada możliwość śledzenia, z jakimi domenami łączy się przeglądarka użytkownika. Ponieważ w starszych implementacjach osobny IP musiał odpowiadać jednej szyfrowanej domenie, co umożliwiało mapowanie ruchu, nie pogarsza to poziomu prywatności użytkowników, ale także go nie podnosi.
  4. Historical yearly trends in the usage statistics of site elements for websites (ang.). [dostęp 2022-09-06].
  5. Mark Nottingham: HTTP/2 Implementation Status. 2015-07-15. [dostęp 2022-09-06].
  6. HTTP/2 Frequently Asked Questions (ang.). [dostęp 2022-09-06].