Nicht jede TLS-Konfiguration ist sicher. TLS 1.0 und 1.1 sind veraltet und enthalten bekannte Schwachstellen, einige Cipher Suites sind schwach oder knackbar. Schlecht konfiguriertes HTTPS erzeugt ein falsches Sicherheitsgefuehl — der Browser zeigt ein Schloss, aber ein Angreifer kann den Verkehr entschluesseln. Eine korrekte TLS-Konfiguration ist die Grundlage jeder Webanwendung.
Empfohlene Konfiguration — 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;
Zentrale Entscheidungen: Erlauben Sie nur TLS 1.2 und 1.3 (TLS 1.3 bevorzugt), verwenden Sie AEAD Cipher Suites mit Forward Secrecy (ECDHE). ssl_prefer_server_ciphers off wird fuer TLS 1.3 empfohlen, da der Client typischerweise den besten Cipher waehlt. OCSP Stapling eliminiert die Notwendigkeit, dass der Browser die CA zur Zertifikatsverifizierung kontaktiert — reduziert Latenz und verbessert die Privatsphaere.
Zusaetzliche Sicherheitsheader¶
Neben der TLS-Konfiguration fuegen Sie den HSTS-Header hinzu (Strict-Transport-Security: max-age=63072000; includeSubDomains; preload), um sicherzustellen, dass der Browser immer HTTPS verwendet. Nach der Verifizierung der Funktionalitaet fuegen Sie die Domain zur HSTS-Preload-Liste hinzu fuer Schutz auch beim Erstzugriff.
Testen¶
# SSL Labs Online-Test
# https://ssllabs.com/ssltest/
openssl s_client -connect example.com:443 -tls1_3
testssl.sh https://example.com
Der SSL-Labs-Test bewertet die Konfiguration von A+ bis F. Zielen Sie auf A+. testssl.sh ist eine Open-Source-Alternative fuer lokales Testen ohne Daten an externe Dienste zu senden. Testen Sie regelmaessig — neue Schwachstellen tauchen kontinuierlich auf.
Was man NIEMALS verwenden sollte¶
- SSL 2.0, 3.0, TLS 1.0, 1.1 — bekannte Schwachstellen (POODLE, BEAST, CRIME)
- RC4, 3DES, NULL Ciphers — knackbar oder ohne Verschluesselung
- Self-Signed-Zertifikate in der Produktion — Let’s Encrypt ist kostenlos
Wichtigste Erkenntnis¶
TLS 1.2 als Minimum, TLS 1.3 als Ideal. AEAD Cipher Suites mit Forward Secrecy, OCSP Stapling, HSTS-Header. Auf SSL Labs testen und A+ anstreben.