Ne každá TLS konfigurace je bezpečná. TLS 1.0 a 1.1 jsou deprecated a obsahují známé zranitelnosti, některé cipher suites jsou slabé nebo zlomitelné. Špatně nakonfigurovaný HTTPS vytváří falešný pocit bezpečí — prohlížeč ukazuje zámek, ale útočník může provoz dešifrovat. Správná konfigurace TLS je základem každé webové aplikace.
Doporučená konfigurace — 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_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_stapling on;
ssl_stapling_verify on;
Klíčová rozhodnutí: povolte pouze TLS 1.2 a 1.3 (TLS 1.3 je preferován), používejte AEAD cipher suites s forward secrecy (ECDHE). ssl_prefer_server_ciphers off je doporučeno pro TLS 1.3, protože klient typicky zvolí nejlepší cipher. OCSP stapling eliminuje potřebu, aby prohlížeč kontaktoval CA pro ověření certifikátu — snižuje latenci a zvyšuje soukromí.
Další bezpečnostní headers¶
Kromě TLS konfigurace přidejte HSTS header (Strict-Transport-Security: max-age=63072000; includeSubDomains; preload), který zajistí, že prohlížeč vždy použije HTTPS. Po ověření funkčnosti přidejte doménu do HSTS Preload listu pro ochranu i při prvním přístupu.
Testování¶
# SSL Labs online test
# https://ssllabs.com/ssltest/
openssl s_client -connect example.com:443 -tls1_3
testssl.sh https://example.com
SSL Labs test hodnotí konfiguraci od A+ do F. Cílte na A+. Testssl.sh je open-source alternativa pro lokální testování bez odesílání dat externím službám. Pravidelně testujte — nové zranitelnosti se objevují průběžně.
Co NIKDY nepoužívat¶
- SSL 2.0, 3.0, TLS 1.0, 1.1 — known vulnerabilities (POODLE, BEAST, CRIME)
- RC4, 3DES, NULL ciphers — zlomitelné nebo bez šifrování
- Self-signed certifikáty v produkci — Let’s Encrypt je zdarma
Klíčový takeaway¶
TLS 1.2 jako minimum, TLS 1.3 jako ideál. AEAD cipher suites s forward secrecy, OCSP stapling, HSTS header. Testujte na SSL Labs a cílte na A+.