TLS für Nginx konfigurieren
Schritt-für-Schritt-Anleitung: ssl_protocols, Cipher Suites, OCSP Stapling und automatische Zertifikatserneuerung mit Certbot auf Nginx einrichten.
TLS auf Nginx — native Kontrolle über jede Einstellung
Nginx bietet über die ssl_protocols-Direktive vollständige Kontrolle über TLS-Versionen und Cipher Suites. OCSP Stapling ist direkt eingebaut, kein zusätzliches Modul nötig. Als meistgenutzter Webserver und Reverse Proxy ist Nginx die erste Wahl für leistungsstarke, sicher konfigurierte TLS-Endpunkte.
Diese Anleitung konfiguriert Nginx für TLS 1.2 und 1.3, deaktiviert unsichere Protokolle, optimiert Cipher Suites für Forward Secrecy und richtet automatische Zertifikatserneuerung mit Certbot ein. Die Konfiguration ist für ein Qualys SSL Labs A+ optimiert.
TLS-Versionen und Cipher Suites konfigurieren
Die Kernkonfiguration beschränkt Nginx auf TLS 1.2 und 1.3. ssl_prefer_server_ciphers on erzwingt für TLS 1.2 die sichereren Server-Cipher-Suites. ssl_conf_command (ab Nginx 1.19.4) erlaubt die explizite Konfiguration der TLS-1.3-Cipher-Suites direkt über OpenSSL.
# /etc/nginx/conf.d/ssl.conf — TLS-Konfiguration
server {
listen 443 ssl http2;
server_name ihre-domain.de;
ssl_certificate /etc/letsencrypt/live/ihre-domain.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ihre-domain.de/privkey.pem;
# Nur TLS 1.2 und 1.3 erlauben (1.0 und 1.1 deaktiviert)
ssl_protocols TLSv1.2 TLSv1.3;
# TLS 1.2 Cipher Suites — ECDHE bevorzugt (Forward Secrecy)
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
# Server-Cipher-Präferenz für TLS 1.2 erzwingen
ssl_prefer_server_ciphers on;
# ECDH-Kurven (X25519 zuerst für beste Performance)
ssl_ecdh_curve X25519:prime256v1:secp384r1;
# TLS 1.3 Cipher Suites explizit setzen (ab Nginx 1.19.4)
ssl_conf_command Ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256;
# Session Cache für Performance
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
} TLS 1.3 erfordert OpenSSL 1.1.1 oder neuer. Ubuntu 20.04+ und Debian 10+ haben OpenSSL 1.1.1 standardmäßig. Prüfen Sie mit openssl version.
OCSP Stapling aktivieren
OCSP Stapling beschleunigt den TLS-Handshake: Der Server ruft den Zertifikatsstatus selbst ab und heftet ihn an den Handshake — der Client spart einen Netzwerk-Roundtrip. Für Zertifikate von DigiCert, Sectigo oder anderen CAs (nicht Let's Encrypt) ist dies besonders wichtig.
# OCSP Stapling — für CAs außer Let's Encrypt empfohlen
server {
# ... ssl_certificate etc. ...
ssl_stapling on;
ssl_stapling_verify on;
# Vertrauenskette für OCSP-Validierung
ssl_trusted_certificate /etc/letsencrypt/live/ihre-domain.de/chain.pem;
# DNS-Resolver für OCSP-Anfragen (Google + Cloudflare)
resolver 8.8.8.8 1.1.1.1 valid=300s;
resolver_timeout 5s;
} Let's Encrypt + Certbot einrichten
Certbot mit dem Nginx-Plugin automatisiert Zertifikatsbeschaffung und -erneuerung. Ab März 2026 sinkt die maximale Zertifikatsgültigkeit auf 200 Tage, bis März 2029 auf 47 Tage — ACME-Automatisierung ist dann Pflicht. Richten Sie Certbot jetzt ein und vermeiden Sie manuelle Erneuerung.
# Certbot mit Nginx-Plugin installieren
sudo apt install certbot python3-certbot-nginx
# Zertifikat beantragen und Nginx automatisch konfigurieren
sudo certbot --nginx -d ihre-domain.de -d www.ihre-domain.de
# Automatische Erneuerung testen
sudo certbot renew --dry-run
# Systemd-Timer prüfen (läuft zweimal täglich)
systemctl status certbot.timer --nginx-Aufruf Teile Ihrer Nginx-Konfiguration. Sichern Sie /etc/nginx/ vorher und prüfen Sie nach dem Ausführen, ob Ihre ssl_ciphers und ssl_protocols korrekt erhalten geblieben sind. Konfiguration verifizieren
Nach dem Reload prüfen Sie mit openssl s_client, ob TLS 1.3 aktiv ist und TLS 1.0/1.1 abgelehnt wird. Für ein vollständiges Audit empfehlen wir zusätzlich den Wolf-Agents Web Security Check oder Qualys SSL Labs.
# 1. Nginx-Konfiguration prüfen
sudo nginx -t
# 2. Nginx neu laden
sudo systemctl reload nginx
# 3. TLS 1.3 testen
openssl s_client -connect ihre-domain.de:443 -tls1_3 2>&1 | grep -E "Protocol|Cipher"
# Erwartete Ausgabe:
# Protocol : TLSv1.3
# Cipher : TLS_AES_256_GCM_SHA384
# 4. TLS 1.0/1.1 muss abgelehnt werden
openssl s_client -connect ihre-domain.de:443 -tls1 2>&1 | grep "alert"
# Erwartete Ausgabe: alert handshake failure Der Scanner prüft TLS-Version, Cipher Suites und Zertifikatskette als Teil der 166 Prüfpunkte — mit konkreten Empfehlungen und Scoring nach Note A+ bis F.
Wie steht Ihre Domain bei TLS-Konfiguration?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.
Häufig gestellte Fragen
Wie aktiviere ich TLS 1.3 in Nginx?
Fügen Sie TLSv1.3 zur ssl_protocols-Direktive hinzu: ssl_protocols TLSv1.2 TLSv1.3; — Nginx unterstützt TLS 1.3 ab Version 1.13.0 mit OpenSSL 1.1.1+. Prüfen Sie Ihre Version mit nginx -v und openssl version.
Was ist ssl_conf_command und wann brauche ich es?
ssl_conf_command erlaubt direkten Zugriff auf OpenSSL-Konfigurationsoptionen, die keine native Nginx-Direktive haben. Für TLS 1.3 Cipher Suites verwenden Sie: ssl_conf_command Ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256; — verfügbar ab Nginx 1.19.4.
Muss ich ssl_prefer_server_ciphers bei TLS 1.3 setzen?
Bei TLS 1.3 ignoriert OpenSSL ssl_prefer_server_ciphers — alle 5 Cipher Suites sind sicher. Die Direktive wirkt nur für TLS 1.2. Setzen Sie on, um bei TLS 1.2 die sichereren Server-Cipher-Suites bevorzugt zu verwenden und schwächere Client-Präferenzen zu überstimmen.
Ist OCSP Stapling nach dem Let's Encrypt OCSP-Ende noch relevant?
Let's Encrypt hat OCSP im Januar 2025 für neue Zertifikate eingestellt und nutzt stattdessen kurze Zertifikatsgültigkeiten. Für LE-Zertifikate ist ssl_stapling nicht mehr nötig. Für Zertifikate von DigiCert, Sectigo oder anderen CAs bleibt OCSP Stapling empfehlenswert.
Welche ssl_ecdh_curve-Einstellung ist für Post-Quantum sicher?
Nginx selbst unterstützt keine Post-Quantum Key-Exchange-Kurven direkt — das übernimmt OpenSSL. Mit OpenSSL 3.5+ und ssl_conf_command Groups X25519MLKEM768:X25519:prime256v1 aktivieren Sie hybride Post-Quantum-Handshakes für Browser, die X25519MLKEM768 unterstützen (Chrome, Firefox, Edge ab Ende 2024).
Wie teste ich meine Nginx TLS-Konfiguration lokal?
Nutzen Sie openssl s_client -connect ihre-domain.de:443 -tls1_3 für einen schnellen Check. Für ein vollständiges Audit empfehlen wir den Wolf-Agents Web Security Check oder Qualys SSL Labs — beide prüfen Protokollversionen, Cipher Suites und Zertifikatsketten detailliert.
Was ist der Unterschied zwischen ssl_ciphers und ssl_conf_command Ciphersuites?
ssl_ciphers konfiguriert TLS 1.2 Cipher Suites. ssl_conf_command Ciphersuites konfiguriert explizit TLS 1.3 Cipher Suites — ohne diesen Befehl nutzt Nginx die OpenSSL-Defaults (alle 5 TLS-1.3-Suites). Für maximale Sicherheit auf High-Security-Servern können Sie weniger sichere TLS-1.3-Suites wie TLS_AES_128_CCM_8_SHA256 deaktivieren.