Die SSL/TLS-Konfiguration hat sich erheblich veraendert. Dies ist der aktuelle Stand der Best Practices fuer 2026 — was aktiviert, was deaktiviert werden sollte und was kommt.
Protokollversionen
| Protokoll | Status | Aktion |
|---|---|---|
| SSL 2.0, 3.0 | Gebrochen | Deaktivieren — kritische Schwachstellen (POODLE, DROWN) |
| TLS 1.0 | Veraltet (2021) | Deaktivieren — BEAST-Schwachstelle |
| TLS 1.1 | Veraltet (2021) | Deaktivieren — keine modernen Cipher-Unterstuetzung |
| TLS 1.2 | Sicher | Aktivieren — nur mit AEAD-Ciphers |
| TLS 1.3 | Aktueller Standard | Aktivieren — schnellstes, sicherstes |
Nginx: ssl_protocols TLSv1.2 TLSv1.3;
Apache: SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
Cipher Suites
TLS 1.3 (keine Konfiguration noetig)
Alle 5 Cipher Suites sind sicher. Versuchen Sie nicht, sie anzupassen — Sie koennen es nicht besser machen.
TLS 1.2 (nur AEAD einschraenken)
# Nginx
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';
ssl_prefer_server_ciphers off;
Regeln:
- Nur
ECDHE-*-Suites — stellt Forward Secrecy sicher - Nur
*-GCM-*oder*-CHACHA20-*— nur AEAD-Ciphers - Keine CBC-Ciphers — anfaellig fuer BEAST, Lucky13
ssl_prefer_server_ciphers off— den Client waehlen lassen (moderne Clients waehlen die beste Option)
Zertifikatsverwaltung
| Praxis | Warum |
|---|---|
| ECDSA P-256-Schluessel verwenden | Kleiner, schneller als RSA 2048 |
| Erneuerung automatisieren | 47-Tage-Gueltigkeit bis 2029 macht manuelle Erneuerung unpraktisch |
fullchain.pem ausliefern | Verhindert Chain-of-Trust-Fehler |
| Zertifikatsablauf ueberwachen | Alarme fuer Tag 60 von 90 setzen |
| Certificate Transparency-Monitoring verwenden | Unautorisierte Zertifikate erkennen |
| Schluessel bei Erneuerung rotieren | Private Schluessel nicht ueber Zertifikate hinweg wiederverwenden |
Sicherheitsheader
# HSTS -- immer HTTPS verwenden (mit kurzem max-age beginnen, spaeter erhoehen)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
# MIME-Type-Sniffing verhindern
add_header X-Content-Type-Options "nosniff" always;
# Clickjacking verhindern
add_header X-Frame-Options "SAMEORIGIN" always;
# Unsichere Sub-Ressourcen upgraden
add_header Content-Security-Policy "upgrade-insecure-requests" always;
Performance-Optimierung
| Einstellung | Konfiguration | Vorteil |
|---|---|---|
| HTTP/2 | listen 443 ssl http2; | Multiplexing, Header-Komprimierung |
| Session-Caching | ssl_session_cache shared:SSL:10m; | Vermeidet Re-Handshake fuer wiederkehrende Besucher |
| Session Tickets aus | ssl_session_tickets off; | Bessere Forward Secrecy |
| OCSP Stapling | ssl_stapling on; | Schnellere Zertifikatspruefung, besserer Datenschutz |
| Early Data (0-RTT) | TLS 1.3 Standard | Null-Latenz-Wiederaufnahme (mit Vorsicht verwenden) |
Vollstaendige Nginx-Konfiguration (produktionsbereit)
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/ssl/fullchain.pem;
ssl_certificate_key /etc/ssl/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
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';
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
root /var/www/html;
}
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
Test: Geben Sie Ihre Domain bei SSL Labs ein — diese Konfiguration sollte die Note A+ erzielen.
Was man NICHT tun sollte
| Schlechte Praxis | Warum | Was stattdessen tun |
|---|---|---|
ssl_protocols TLSv1 TLSv1.1; | Veraltet, verwundbar | Nur TLS 1.2 + 1.3 |
ssl_ciphers ALL; | Enthaelt schwache Ciphers | Explizite ECDHE + AEAD-Liste |
ssl_prefer_server_ciphers on; (TLS 1.3) | Unnoetig — TLS 1.3 Ciphers sind alle sicher | off |
cert.pem statt fullchain.pem verwenden | Fehlende Kette -> Vertrauensfehler | Immer fullchain.pem fuer Nginx |
| Selbstsignierte Zertifikate in Produktion | Browser-Warnungen, kein Vertrauen | Let’s Encrypt (kostenlos) |
| Gleicher privater Schluessel ueber Jahre | Begrenzt die Schadensbegrenzung | Bei jeder Erneuerung rotieren |
| Kein HSTS | Anfaellig fuer Downgrade-Angriffe | Nach Tests aktivieren |
max-age=0 fuer HSTS | Deaktiviert HSTS effektiv | Mit 300 beginnen, auf 63072000 erhoehen |
Haeufig gestellte Fragen
Wie teste ich meine SSL-Konfiguration?
SSL Labs Server Test — geben Sie Ihre Domain ein und erhalten Sie einen detaillierten Bericht mit einer Buchstabennote (A-F). Pruefen Sie Protokollunterstuetzung, Cipher-Staerke, Kettenvaliditaet und bekannte Schwachstellen.
Welche Note sollte ich anstreben?
A+ fuer Produktionsseiten. Dies erfordert: nur TLS 1.2+, AEAD-Ciphers, gueltige Kette, HSTS mit langem max-age. Die obige Konfiguration erreicht A+.
Wie oft sollte ich meine SSL-Konfiguration ueberpruefen?
Jaehrlich oder wenn eine neue Schwachstelle bekannt wird. Abonnieren Sie die Statusseite von Let’s Encrypt und folgen Sie dem Mozilla SSL Configuration Generator fuer aktualisierte Empfehlungen.
Gibt es ein Tool, das die richtige Konfiguration fuer mich generiert?
Ja — Mozilla SSL Configuration Generator. Waehlen Sie Ihren Server (Nginx, Apache usw.), Ihre Serverversion, und er generiert eine empfohlene Konfiguration. Das Profil “Modern” entspricht den Praktiken in diesem Artikel.