Sieć i bezpieczeństwo Podstawowy+ 50 min

Podstawy TLS i HTTPS

Poznasz rolę TLS i HTTPS, podstawowe elementy certyfikatu oraz proste komendy do sprawdzania bezpiecznego połączenia ze stroną.

Wróć do listy lekcji

1. Krótka teoria

HTTP przesyła żądania i odpowiedzi bez własnej warstwy szyfrowania. HTTPS to HTTP używane przez połączenie chronione TLS. TLS zapewnia poufność, integralność i uwierzytelnienie serwera, dzięki czemu użytkownik może sprawdzić, czy łączy się z właściwą stroną i czy dane nie są łatwo czytane po drodze. Certyfikat serwera zawiera między innymi nazwę domeny, okres ważności, klucz publiczny i informację o wystawcy. Klucz prywatny odpowiadający certyfikatowi zostaje na serwerze i musi być chroniony. CA, czyli urząd certyfikacji, podpisuje certyfikat lub pośredni certyfikat w łańcuchu zaufania. Przeglądarka i narzędzia systemowe sprawdzają, czy certyfikat pasuje do domeny, czy nie wygasł i czy prowadzi do zaufanego CA. Do podstawowej diagnostyki wystarczy curl -I, który pokaże nagłówki odpowiedzi HTTPS, oraz openssl s_client, który pozwala obejrzeć szczegóły połączenia TLS i łańcucha certyfikatów. Certyfikat nie naprawia błędów aplikacji, ale jest niezbędną warstwą bezpiecznej komunikacji w publicznym internecie.

2. Przykłady komend

curl -I https://example.com

Pobiera nagłówki odpowiedzi HTTPS bez treści strony.

$ curl -I https://example.com
curl -Iv https://example.com

Pokazuje bardziej szczegółowy przebieg połączenia, w tym informacje TLS.

$ curl -Iv https://example.com
openssl s_client -connect example.com:443 -servername example.com

Nawiązuje połączenie TLS i pokazuje informacje o certyfikacie serwera.

$ openssl s_client -connect example.com:443 -servername example.com
openssl s_client -connect example.com:443 -servername example.com -showcerts

Pokazuje certyfikaty przesłane przez serwer w trakcie połączenia TLS.

$ openssl s_client -connect example.com:443 -servername example.com -showcerts
echo | openssl s_client -connect example.com:443 -servername example.com

Wykonuje szybki test połączenia TLS bez ręcznego kończenia sesji.

$ echo | openssl s_client -connect example.com:443 -servername example.com
curl -I http://example.com

Pozwala porównać odpowiedź HTTP z odpowiedzią HTTPS, jeśli serwer obsługuje oba warianty.

$ curl -I http://example.com

3. Zadanie praktyczne

Porównaj odpowiedzi curl -I http://example.com i curl -I https://example.com. Zwróć uwagę na kod odpowiedzi, ewentualne przekierowanie oraz użyty schemat adresu. Następnie uruchom openssl s_client -connect example.com:443 -servername example.com i odszukaj informacje o certyfikacie, nazwie serwera oraz wyniku weryfikacji. Na końcu zapisz własnymi słowami, czym różni się certyfikat od klucza prywatnego i dlaczego klucza prywatnego nie wolno udostępniać.

4. Typowe błędy

  • Mylenie HTTPS z samym przekierowaniem HTTP.
  • Traktowanie certyfikatu jako sekretu, a klucza prywatnego jako pliku publicznego.
  • Ignorowanie daty ważności certyfikatu.
  • Pomijanie zgodności nazwy domeny z certyfikatem.
  • Zakładanie, że poprawny certyfikat oznacza brak błędów w aplikacji.
  • Uruchamianie openssl s_client bez parametru -servername przy domenach korzystających z SNI.

5. Podsumowanie

HTTPS to HTTP chronione przez TLS. Certyfikat pomaga potwierdzić tożsamość serwera, klucz prywatny musi pozostać tajny, a CA buduje łańcuch zaufania. curl -I pozwala szybko sprawdzić odpowiedź HTTPS, a openssl s_client pokazuje szczegóły połączenia TLS i certyfikatów. Poprawny TLS jest podstawą bezpiecznej komunikacji, ale nie zastępuje poprawnej konfiguracji aplikacji.

Flow nauki
  1. Teoria
  2. Przykład
  3. Ćwiczenie
  4. Quiz
  5. Praktyka
  6. Podsumowanie