🎯 Einführung
Sichere Kommunikation ist eine der Grundsäulen moderner Webinfrastruktur.\ Um die Vertraulichkeit und Integrität von Daten zu schützen, die über das Internet übertragen werden, verwenden wir SSL (Secure Sockets Layer) und seinen Nachfolger TLS (Transport Layer Security).
Leider sind viele Systeme noch immer falsch konfiguriert oder verwenden veraltete Cipher Suites, was sowohl Benutzerdaten als auch die Serverintegrität gefährdet.
In diesem Leitfaden erfahren Sie, wie Sie eine moderne SSL/TLS-Umgebung einrichten -- von TLS 1.3 und Perfect Forward Secrecy bis hin zu HSTS, OCSP Stapling und automatischer Zertifikatserneuerung.
🧰 Voraussetzungen
Dieser Leitfaden basiert auf folgender Umgebung:
- Server: Ubuntu 22.04 LTS (oder ähnlich)\
- Webserver: Nginx 1.24+ oder Apache 2.4.58+\
- Tools:
openssl,curl,testssl.sh\ - Zertifizierungsstelle (CA): Let's Encrypt (kostenlos) oder kommerzielle CA
Erforderliche Grundkenntnisse: - Basis-Linux-Befehle (CLI) -
SSL-Verzeichnisstruktur (/etc/letsencrypt/live/) - Grundverständnis
von Nginx-/Apache-Konfigurationen
🧩 1. Wählen Sie die richtige TLS-Version
Heute gelten TLS 1.2 und TLS 1.3 als sicher.\ Wenn möglich, aktivieren Sie nur TLS 1.3.\ Ältere Versionen (TLS 1.0, 1.1, SSLv3) sind unsicher und sollten deaktiviert werden.
🔧 Beispiel (Nginx)
ssl_protocols TLSv1.3 TLSv1.2;
ssl_prefer_server_ciphers on;
💡 Tipp:\ TLS 1.3 verwendet automatisch sichere Cipher Suites, daher muss keine manuelle Liste angegeben werden, außer wenn TLS 1.2 aktiviert bleibt.
🔒 Beispiel (Apache)
SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLHonorCipherOrder on
🧠 2. Sichere Cipher Suites verwenden
Cipher Suites bestimmen, wie Daten verschlüsselt werden.\ Veraltete oder schwache Algorithmen (z. B. RC4, DES, 3DES) sollten niemals verwendet werden.
Empfohlene Cipher-Liste (für TLS 1.2)
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';
Diese Liste: - Unterstützt Perfect Forward Secrecy (PFS)\
- Verwendet moderne Algorithmen wie AES-GCM und CHACHA20\
- Nutzt sichere Schlüsselaustauschverfahren (ECDHE)
🧩 Hinweis:\ PFS verhindert, dass vergangene Sitzungen entschlüsselt werden, selbst wenn ein zukünftiger Schlüssel kompromittiert wird.
🧱 3. Vollständige Zertifikatskette bereitstellen
Browser müssen die vollständige Zertifikatskette erhalten, einschließlich Zwischenzertifikaten.\ Fehlende Zwischenzertifikate führen zu Warnungen oder schlechteren SSL-Bewertungen.
Beispiel (Nginx)
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
Beispiel (Apache)
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
💡 Let's Encrypt liefert automatisch eine
fullchain.pem, die Haupt- und Zwischenzertifikate enthält.
🧭 4. HSTS aktivieren (HTTP Strict Transport Security)
HSTS erzwingt, dass Browser ausschließlich HTTPS verwenden -- ein effektiver Schutz gegen SSL-Stripping-Angriffe.
Beispiel (Nginx)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
Diese Direktive: - Erzwingt HTTPS für 1 Jahr\
- Gilt für alle Subdomains\
- Ermöglicht Preload-Eintrag in Browsern
Status prüfen:\ 👉
🔁 5. OCSP Stapling aktivieren
OCSP Stapling beschleunigt die Zertifikatsprüfung, indem der Server die gültige OCSP-Antwort der CA zwischenspeichert.
Beispiel (Nginx)
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;
resolver_timeout 5s;
⚙️ Ohne Stapling fragt jeder Client direkt bei der CA an -- langsamer und weniger datenschutzfreundlich.
🔐 6. Perfect Forward Secrecy (PFS)
PFS stellt sicher, dass die Kompromittierung eines Schlüssels keine alten Sitzungen offenlegt.
Test
openssl s_client -connect example.com:443 -tls1_2 | grep "Cipher"
Wenn ECDHE oder DHE erscheint, ist PFS aktiv.
🔄 7. Automatische Zertifikatserneuerung
Manuelles Erneuern ist fehleranfällig.\
Let's Encrypt unterstützt automatische Erneuerung per cron oder
systemd.
Cron-Beispiel
sudo crontab -e
Fügen Sie hinzu:
0 3 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"
🧠 Testmodus:
sudo certbot renew --dry-run
🧪 8. SSL-Konfiguration testen
1️⃣ SSL Labs Test
👉
Domain eingeben → Analyse starten → Bewertung (A+ empfohlen).
2️⃣ testssl.sh
git clone https://github.com/drwetter/testssl.sh.git
cd testssl.sh
./testssl.sh https://example.com
Das Tool überprüft: - Protokollunterstützung\
- Cipher-Stärke\
- HSTS-/OCSP-Konfiguration
📋 9. Leistungsoptimierung
TLS muss Ihre Website nicht verlangsamen.
Empfehlungen: - Aktivieren Sie HTTP/2 und HTTP/3 (QUIC)\
- Verwenden Sie TLS 1.3 0-RTT Session Resumption\
- Nutzen Sie ECC (P-256) Zertifikate für schnellere Handshakes\
- Caching & Reverse Proxy (Cloudflare, Nginx Proxy Manager)
HTTP/2 aktivieren
listen 443 ssl http2;
⚡ Multiplexing erlaubt mehrere Anfragen pro Verbindung -- schnellere Ladezeiten.
🧱 10. Sichere Weiterleitungen
HTTP→HTTPS sollte in einer klaren Regel erfolgen.
Beispiel (Nginx)
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
💡
301= permanente Weiterleitung, verbessert SEO und Caching.
🧰 11. Sicherheits-Header hinzufügen
Ergänzen Sie Ihre SSL-Konfiguration durch Browser-Header:
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin";
add_header Permissions-Policy "geolocation=(), microphone=()";
add_header Content-Security-Policy "default-src 'self';";
Diese schützen vor: - Clickjacking\
- MIME-Sniffing\
- Cross-Site-Tracking
🧮 12. Zertifikatstypen & Einsatzzwecke
Typ Verwendung Beschreibung
DV (Domain Blogs, persönliche Websites Schnell, automatisch Validation)
OV Firmenwebsites Enthält Identitätsprüfung
(Organization
Validation)
EV (Extended Finanzen, E-Commerce Strenge Verifizierung Validation)
Wildcard *.example.com Gilt für alle Subdomains
SAN (Subject Multi-Domain Ein Zertifikat für mehrere Alt Name) Domains
🔍 Empfehlung:\ OV/EV für Unternehmen -- DV (Let's Encrypt) für Automatisierung und Schnelligkeit.
🔎 13. Protokollierung & Überwachung
SSL-Fehler laufend prüfen:
tail -f /var/log/nginx/error.log | grep ssl
Erneuerungs-Logs:
sudo cat /var/log/letsencrypt/letsencrypt.log
Mit Prometheus + Grafana Zertifikatslaufzeiten überwachen.
🧩 14. Vollständige Nginx-Konfiguration
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_prefer_server_ciphers on;
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_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin";
add_header Content-Security-Policy "default-src 'self';";
root /var/www/html;
index index.html index.php;
}
🧭 Fazit
Eine korrekt konfigurierte SSL/TLS-Umgebung schützt nicht nur Daten, sondern stärkt auch Vertrauen, SEO und Systemstabilität.
Dieser Leitfaden zeigte: - TLS 1.3 und moderne Cipher\
- HSTS, OCSP und PFS\
- Automatisierte Erneuerung und Tests
Ihr System erreicht jetzt A+-Sicherheitsniveau -- modern, schnell und zuverlässig.