Czym jest TLS?
TLS (Transport Layer Security) to protokół kryptograficzny zapewniający bezpieczną komunikację w sieciach komputerowych. TLS jest następcą SSL (Secure Sockets Layer) i stoi za połączeniami HTTPS, bezpiecznym przesyłaniem poczty (STARTTLS) oraz wieloma innymi szyfrowanymi protokołami internetowymi. Gdy w przeglądarce widzisz ikonę kłódki, TLS szyfruje dane między urządzeniem a serwerem.Historia wersji TLS
| Wersja | Rok | Status |
|---|---|---|
| SSL 2.0 | 1995 | Wycofana, niebezpieczna |
| SSL 3.0 | 1996 | Wycofana, niebezpieczna |
| TLS 1.0 | 1999 | Wycofana |
| TLS 1.1 | 2006 | Wycofana |
| TLS 1.2 | 2008 | Obowiązujący standard |
| TLS 1.3 | 2018 | Najnowsza, zalecana |
Jak działa TLS
Uzgadnianie TLS (TLS 1.2)
Client Server
│ │
├──── ClientHello ─────────────────► │
│ (supported ciphers, random) │
│ │
│ ◄─── ServerHello ──────────────────┤
│ (selected cipher, cert) │
│ │
├──── Key Exchange ────────────────► │
│ (encrypted pre-master secret) │
│ │
│ ◄─── Finished ─────────────────────┤
│ │
└──── Encrypted Data ◄──────────────►┘
Ulepszenia TLS 1.3
- Mniej podróży w obie strony (szybsze uzgadnianie)
- Usunięte niebezpieczne szyfry
- Obowiązkowa poufność przekazywana
- Szyfrowane komunikaty uzgadniania
Składniki TLS
Certyfikaty
- Uwierzytelniają tożsamość serwera
- Wydają je urzędy certyfikacji
- Zawierają klucz publiczny do szyfrowania
Zestawy szyfrów
Definiują używane algorytmy szyfrowania:
TLS_AES_256_GCM_SHA384 (TLS 1.3)
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (TLS 1.2)
│ │ │ │
│ │ │ └── Hash algorithm
│ │ └── Encryption algorithm
│ └── Key exchange
└── Protocol
Zastosowania TLS
| Aplikacja | Protokół | Port |
|---|---|---|
| Przeglądanie WWW | HTTPS | 443 |
| Poczta (IMAP) | IMAPS | 993 |
| Poczta (SMTP) | SMTPS | 465 |
| Wysyłanie poczty | STARTTLS | 587 |
| FTP | FTPS | 990 |
Konfiguracja serwera
Konfiguracja TLS w Nginx
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
Dobre praktyki
1. Używaj TLS 1.2 lub 1.3: Wyłącz starsze wersje
2. Silne zestawy szyfrów: Preferuj szyfry AEAD
3. Włącz HSTS: Wymuszaj połączenia TLS
4. Zarządzaj certyfikatami: Automatyzuj odnowienia
5. Poufność przekazywana: Używaj wymiany kluczy ECDHE
6. Regularnie testuj: SSL Labs, testssl.sh
Testowanie konfiguracji TLS
# OpenSSL test
openssl s_client -connect example.com:443 -tls1_3
# Check certificate
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -text
TLS jest podstawą bezpiecznej komunikacji internetowej, szyfrując dane podczas przesyłania i chroniąc przed podsłuchiwaniem, manipulacją oraz atakami typu man-in-the-middle.