SSL/TLS richtig konfigurieren: Von A+ bei SSL Labs bis HSTS

Zurück

Einleitung: Warum SSL/TLS heute mehr ist als nur das grüne Schloss

Das grüne Schloss war gestern. Heute ist eine korrekte SSL/TLS-Konfiguration entscheidend für:

  • SEO-Ranking (Google bevorzugt sichere Seiten)

  • Kundenvertrauen (95% der Nutzer prüfen Sicherheitsindikatoren)

  • Performance (moderne Protokolle sind schneller!)

  • Compliance (DSGVO, PCI-DSS, etc.)

Die harte Wahrheit: 68% aller Websites haben Schwachstellen in ihrer SSL/TLS-Konfiguration. Sind Sie dabei?

Schritt 1: SSL-Test - Wo stehen Sie wirklich?

SSL Labs Test durchführen

text

1. Gehen Sie auf: https://www.ssllabs.com/ssltest/
2. Geben Sie Ihre Domain ein
3. Warten Sie auf das Ergebnis
4. Notieren Sie Ihren aktuellen Score (A-F)

Typische Probleme bei B oder schlechter:

text

❌ TLS 1.0/1.1 aktiv (veraltet, unsicher)
❌ Schwache Cipher Suites (RC4, 3DES)
❌ Kein HSTS (HTTP Strict Transport Security)
❌ Kein OCSP Stapling
❌ Falsche Zertifikatskette

Schritt 2: Die perfekte Nginx-Konfiguration

Basis-Konfiguration für A+ Rating

nginx

# /etc/nginx/sites-available/your-site
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name ihre-domain.de www.ihre-domain.de;
    
    # Zertifikate
    ssl_certificate /etc/ssl/certs/ihre-domain.de.crt;
    ssl_certificate_key /etc/ssl/private/ihre-domain.de.key;
    
    # SSL Session Cache für Performance
    ssl_session_cache shared:SSL:50m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;
    
    # Moderne Protokolle (nur TLS 1.2/1.3)
    ssl_protocols TLSv1.2 TLSv1.3;
    
    # Moderne Cipher Suites
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers off;
    
    # DH Parameter (starker Schlüsselaustausch)
    ssl_dhparam /etc/nginx/dhparam.pem;
    
    # HSTS - HTTP Strict Transport Security
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
    
    # Weitere Security Headers
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
    
    # OCSP Stapling für bessere Performance
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/ssl/certs/ihre-domain.de.chain.pem;
    
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;
    
    # Rest der Konfiguration...
}

DH Parameter generieren (einmalig)

bash

# 4096-bit DH Parameter generieren (kann 5-10 Minuten dauern)
sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096

# Alternative: 2048-bit für weniger Rechenleistung
sudo openssl dhparam -out /etc/nginx/dhparam.pem 2048

Schritt 3: Apache-Konfiguration für A+ Rating

Apache 2.4+ Konfiguration

apache

# /etc/apache2/sites-available/your-site.conf
<VirtualHost *:443>
    ServerName ihre-domain.de
    ServerAlias www.ihre-domain.de
    
    # Zertifikate
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/ihre-domain.de.crt
    SSLCertificateKeyFile /etc/ssl/private/ihre-domain.de.key
    SSLCertificateChainFile /etc/ssl/certs/ihre-domain.de.chain.pem
    
    # Moderne Protokolle
    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    SSLHonorCipherOrder off
    
    # Moderne Cipher Suites
    SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
    
    # DH Parameter
    SSLOpenSSLConfCmd DHParameters "/etc/apache2/dhparam.pem"
    
    # HSTS Header
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
    
    # Weitere Security Headers
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    
    # OCSP Stapling
    SSLUseStapling on
    SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
    
    # Rest der Konfiguration...
</VirtualHost>

Schritt 4: HSTS verstehen und richtig implementieren

Was ist HSTS?

text

HTTP Strict Transport Security zwingt Browser:
• IMMER HTTPS zu verwenden
• Selbst wenn User http:// eingibt
• Cookie-Hijacking verhindern
• Zertifikatsfehler blockieren

Die HSTS Direktive erklärt

nginx

# 63072000 Sekunden = 2 Jahre
# includeSubDomains = Alle Subdomains
# preload = Aufnahme in Browser-Preload-Liste
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

⚠️ WICHTIGE HSTS-WARNUNGEN:

  1. Preload ist irreversibel für ~3 Monate

  2. Testen Sie auf Staging vor Produktivumgebung

  3. Zertifikat muss immer gültig sein

  4. includeSubDomains betrifft ALLE Subdomains

Preload-Liste eintragen (erst nach Testing!)

text

1. Website muss HSTS mit 'preload' senden
2. Gehen Sie auf: https://hstspreload.org/
3. Domain eingeben und prüfen
4. Bei Erfolg: Submit zur Aufnahme

Schritt 5: Zertifikatsmanagement - Let's Encrypt mit Certbot

Automatische Erneuerung einrichten

bash

# Certbot installieren
sudo apt update
sudo apt install certbot python3-certbot-nginx

# Zertifikat erstellen (Nginx)
sudo certbot --nginx -d ihre-domain.de -d www.ihre-domain.de

# Automatische Erneuerung testen
sudo certbot renew --dry-run

# Cronjob für automatische Erneuerung
sudo crontab -e
# Einfügen:
0 12 * * * /usr/bin/certbot renew --quiet

Wildcard-Zertifikate mit DNS-Challenge

bash

# Cloudflare Beispiel
sudo certbot certonly \
  --manual \
  --preferred-challenges=dns \
  --server https://acme-v02.api.letsencrypt.org/directory \
  -d '*.ihre-domain.de' -d ihre-domain.de

Schritt 6: Performance-Optimierung

TLS 1.3 - Der Performance-Booster

text

Vorteile von TLS 1.3:
• 1-RTT Handshake (statt 2)
• 0-RTT Resumption (für wiederkehrende Besucher)
• Wenner Cipher Suites
• Bessere Sicherheit

Konfiguration für optimale Performance

nginx

# Session Resumption für wiederkehrende Besucher
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;

# TLS 1.3 0-RTT (vorsichtig verwenden!)
ssl_early_data on;  # Nur für idempotente Requests!

# OCSP Stapling (verhindert externe Abfragen)
ssl_stapling on;
ssl_stapling_verify on;

Monitoring der SSL-Performance

bash

# Verbindungszeiten testen
openssl s_time -connect ihre-domain.de:443 -new

# Cipher Suite Test
nmap --script ssl-enum-ciphers -p 443 ihre-domain.de

# Zertifikatsinformationen
openssl s_client -connect ihre-domain.de:443 -servername ihre-domain.de

Schritt 7: Security Headers - Das Rundum-Sorglos-Paket

Die 7 essentiellen Security Headers

nginx

# 1. HSTS (bereits oben)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

# 2. Clickjacking-Schutz
add_header X-Frame-Options "SAMEORIGIN" always;

# 3. MIME-Type Sniffing verhindern
add_header X-Content-Type-Options "nosniff" always;

# 4. XSS-Schutz (ältere Browser)
add_header X-XSS-Protection "1; mode=block" always;

# 5. Referrer Policy
add_header Referrer-Policy "strict-origin-when-cross-origin" always;

# 6. Content Security Policy (CSP) - Individual!
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://ajax.googleapis.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:;" always;

# 7. Permissions Policy (früher Feature Policy)
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;

Schritt 8: Mixed Content vermeiden

Das Problem mit gemischtem Inhalt

text

HTTPS Seite lädt:
• Bilder per HTTP ❌
• Scripts per HTTP ❌
• Stylesheets per HTTP ❌

Browser zeigt: "Unsicher" trotz SSL!

Lösung: Content Security Policy (CSP)

nginx

# CSP die HTTP blockiert
add_header Content-Security-Policy "default-src https: data: 'unsafe-inline' 'unsafe-eval';" always;

Automatische Umleitung von HTTP zu HTTPS

nginx

server {
    listen 80;
    listen [::]:80;
    server_name ihre-domain.de www.ihre-domain.de;
    
    # 301 Permanent Redirect zu HTTPS
    return 301 https://$server_name$request_uri;
}

Schritt 9: Monitoring und Wartung

Automatisches Monitoring-Script

bash

#!/bin/bash
# /etc/cron.weekly/ssl-check.sh

DOMAIN="ihre-domain.de"
LOG="/var/log/ssl-check.log"
EMAIL="admin@ihredomain.de"

echo "=== SSL Check für $DOMAIN am $(date) ===" > $LOG

# 1. Zertifikatsablauf prüfen
DAYS_LEFT=$(echo | openssl s_client -connect $DOMAIN:443 2>/dev/null | openssl x509 -noout -dates | grep 'notAfter' | cut -d'=' -f2)
echo "Zertifikat läuft ab: $DAYS_LEFT" >> $LOG

# 2. SSL Labs Test anstoßen (nur Summary)
echo "" >> $LOG
curl -s "https://api.ssllabs.com/api/v3/analyze?host=$DOMAIN&publish=off&fromCache=on&maxAge=24" | jq '.endpoints[0].grade' >> $LOG

# 3. Security Headers prüfen
echo "" >> $LOG
echo "=== Security Headers ===" >> $LOG
curl -sI https://$DOMAIN | grep -i "strict-transport-security\|x-frame-options\|content-security-policy" >> $LOG

# Email bei Problemen
if grep -q "F\|C\|D\|E" $LOG; then
    mail -s "SSL PROBLEM bei $DOMAIN" $EMAIL < $LOG
fi

Schritt 10: Troubleshooting - Häufige Probleme

Problem 1: Zertifikatskette unvollständig

text

Lösung:
cat domain.crt intermediate.crt root.crt > fullchain.crt

Problem 2: HSTS zu früh aktiviert

text

Symptom: Kein HTTP-Zugriff mehr möglich
Notfall-Lösung:
1. Lokal: chrome://net-internals/#hsts
2. Domain delete eingeben
3. Oder: Warten bis max-age abläuft

Problem 3: TLS 1.3 funktioniert nicht

bash

# Prüfen ob OpenSSL 1.1.1+
openssl version

# Nginx/Apache neu kompilieren falls nötig

Problem 4: OCSP Stapling Fehler

bash

# Manuell testen
openssl s_client -connect ihre-domain.de:443 -status

# OCSP Responder prüfen
openssl x509 -in cert.pem -noout -ocsp_uri

Checkliste: Ihr Weg zu A+

✅ Basis-Check (heute)

  • SSL Labs Test durchgeführt

  • HTTP → HTTPS Umleitung aktiv

  • TLS 1.0/1.1 deaktiviert

  • Schwache Ciphers entfernt

✅ Fortgeschritten (diese Woche)

  • HSTS implementiert (ohne preload)

  • Security Headers gesetzt

  • OCSP Stapling aktiviert

  • DH Parameter generiert

✅ Expert-Level (diesen Monat)

  • CSP individuell angepasst

  • TLS 1.3 optimiert

  • Monitoring eingerichtet

  • HSTS preload geprüft (nicht aktiviert!)

✅ Wartung (kontinuierlich)

  • Automatische Zertifikatsverlängerung

  • Quartalsweise SSL-Tests

  • Security Headers aktuell halten

  • Logs überwachen

Bonus: Konfigurationstools für Einsteiger

Mozilla SSL Configuration Generator

text

https://ssl-config.mozilla.org/

• Nginx/Apache Konfiguration generieren
• Unterschiedliche Security Level
• Moderne/Intermediate/Old Kompatibilität

Cipher Suite Empfehlungen

bash

# Aktuelle Best Practices abrufen
curl -s https://ciphersuite.info/api/cs/current/ | jq '.suites[] | select(.security == "secure")'

Fazit: SSL/TLS ist nie "fertig"

Die Wahrheit über SSL/TLS:

  • Es ist ein laufender Prozess, nicht ein einmaliges Setup

  • Sicherheitsstandards entwickeln sich weiter (Quantum Computing!)

  • Performance-Optimierung ist Teil der Sicherheit

  • Monitoring verhindert Überraschungen

Ihre drei wichtigsten Maßnahmen:

  1. Automatische Tests (SSL Labs wöchentlich)

  2. Automatische Updates (Certbot + Cron)

  3. Security Headers (nie vergessen!)

Bei NexoraHost: In unseren Managed Hosting Paketen übernehmen wir die komplette SSL/TLS Konfiguration und Wartung. Inklusive automatischer A+ Rating-Optimierung und HSTS Management.


Haben Sie Fragen zur optimalen SSL-Konfiguration für Ihre Infrastruktur? Unser Security-Team analysiert gerne Ihre aktuelle Konfiguration und erstellt einen individuellen Optimierungsplan - oft mit sofortiger Verbesserung des SSL Labs Scores.

Weitere Blogartikel

  Du suchst nach einem neuen Server oder Webhosting und wirst von günstigen Lockangeboten überschüttet? Vorsicht – was auf den ersten Blick wie ein Schnäppchen aussieht, kann langfristig zu einer teuren Überraschung werden. Wir zeigen d...

Was ist eigentlich... Webspace? Einfach erklärt (nicht nur für Oma!) Hast du schon mal von Webspace gehört und gedacht: "Was soll das sein?" Keine Sorge, du bist nicht allein. Viele Leute wissen nicht, was das ist - dabei nutzen sie es jeden Tag....

Du hast bereits erste Erfahrungen mit Minecraft Servern gesammelt und möchtest jetzt deinen eigenen, professionellen Server aufsetzen? Egal ob du mit Mods, Plugins oder im klassischen Vanilla-Stil spielen willst – dieser Guide führt dich durch die wichtigsten...