Strict-Transport-Security fehlt
Worum es geht
Ihre Website sendet den Strict-Transport-Security-Header (HSTS) nicht. Dieser Header sagt dem Browser „Sieh auf dieser Website nie wieder HTTP, geh immer direkt über HTTPS“.
Warum das ein Problem ist
Selbst wenn Sie funktionierendes HTTPS und einen HTTP-Redirect haben, hat der erste Besuch eine Schwachstelle. Der Nutzer tippt example.de — der Browser beginnt mit einem HTTP-Versuch. Befindet sich in diesem Moment ein Angreifer zwischen Ihnen und dem Server (öffentliches WLAN, kompromittierter Router), kann er:
- Cookies abfangen, die der Browser mit der HTTP-Anfrage sendet.
- Einen SSL-Strip durchführen — den Nutzer auf HTTP halten und selbst über HTTPS mit dem Server kommunizieren.
Mit HSTS weiß der Browser im Voraus, dass example.de nicht über HTTP aufgerufen werden darf, und der Angriff schlägt fehl.
Wie Sie es beheben
Schritt 1 — sicherstellen, dass HTTPS stabil läuft
HSTS „lernt“ der Browser für einen längeren Zeitraum. Wenn Sie dann HTTPS kaputtmachen (abgelaufenes Zertifikat, versehentlich deaktiviertes SSL), ist Ihre Website für wiederkehrende Besucher nicht erreichbar — der Browser verweigert sogar den Fallback auf HTTP.
Bevor Sie HSTS aktivieren, prüfen Sie:
- Die automatische Zertifikatserneuerung funktioniert (Let’s Encrypt, certbot, Alerting).
- Alle Subdomains, die Sie abdecken wollen, haben ein gültiges Zertifikat.
Schritt 2 — einen kurzen Wert zum Testen setzen
Strict-Transport-Security: max-age=3005 Minuten. Wenn etwas kaputtgeht, klingt es innerhalb von 5 Minuten ab. Überwachen Sie die Verfügbarkeit und führen Sie ein paar Tests durch.
Schritt 3 — den Produktionswert ausrollen
Strict-Transport-Security: max-age=15552000; includeSubDomainsmax-age=15552000= 6 Monate.includeSubDomains= gilt auch für alle Subdomains. Achtung: Wenn Sie eine Subdomain ohne HTTPS haben (Legacy-Admin, Intranet), macht diese Direktive sie unerreichbar.
Schritt 4 (optional) — preload
Wenn Sie in der eingebauten Liste der Browser (Chrome, Firefox, Safari) stehen und HSTS auch beim allerersten Besuch aus einem frischen Browser haben wollen:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preloadRegistrieren Sie die Domain anschließend auf hstspreload.org.Dieser Schritt ist nur schwer rückgängig zu machen — die Entfernung aus der Liste dauert Wochen bis Monate.
Konkrete Konfigurationen
nginx:
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;Apache:
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"Cloudflare: SSL/TLS → Edge Certificates → HTTP Strict Transport Security — UI-Checkbox.