missing-hsts
HSTS nicht aktiviert
HSTS sagt Browsern "für diese Domain immer HTTPS, nie reines HTTP". Ohne HSTS bleibt der allererste Verbindungsversuch ungeschützt; ein Angreifer kann Besucher:innen dadurch beliebig lange auf der ungesicherten Variante halten.
Worum es geht
HSTS ist eine kleine Anweisung, die Ihre Webseite an Browser schickt: “Diese Domain ist HTTPS-only, nie wieder reines HTTP, auch wenn die Person es tippt, auch wenn ein Server umleitet”. Hat ein Browser die Anweisung einmal gesehen, merkt er sie sich für die angegebene Dauer und lehnt jede Klartext-Variante stillschweigend ab.
Ihre Seite schickt diese Anweisung derzeit nicht. HTTPS kann sauber eingerichtet sein, Ihr Server kann reines HTTP sogar auf HTTPS umleiten, aber ohne HSTS bleibt der allererste Verbindungsversuch eines frischen Browsers reines HTTP.
Warum das wichtig ist
Selbst mit eingerichtetem HTTPS schickt ein frischer Browser den
ersten Request an Ihre Domain als reines HTTP, sobald die Person
die Adresse ohne https:// getippt hat. Ein Angreifer im Netz
(etwa in einem öffentlichen WLAN) kann genau diesen einen
Klartext-Request abfangen, ihn nie an Ihren Server weiterleiten und
stattdessen eine gefälschte Variante ausliefern.
HSTS schließt das Fenster. Sobald ein Browser einmal über HTTPS ankommt, hält er die Anweisung fest und versucht für Ihre Domain nie wieder reines HTTP.
Bleibt eine einzelne Lücke: der allererste Besuch überhaupt, bevor der Browser die Anweisung gesehen hat. Die schließen Sie über die HSTS-Preload-Liste, die in jeden großen Browser fest verdrahtet ist. Nach Aufnahme weigert sich auch ein brandneuer Browser, beim ersten Versuch reines HTTP zu sprechen.
So beheben Sie das
Wer Ihren Webserver verwaltet, ergänzt eine einzelne Zeile in der Antwort-Konfiguration. Standardtext:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
Drei Teile:
max-age=63072000sind zwei Jahre in Sekunden, das Minimum für die Aufnahme in die Preload-Liste.includeSubDomainserweitert den Schutz auf alle Subdomains (shop.ihre-domain.de,mail.ihre-domain.deetc.). Nur einschalten, wenn jede Subdomain HTTPS-only ist.preloadsignalisiert die Absicht, in die Preload-Liste aufgenommen zu werden.
Übliche Server-Konfiguration:
nginx:
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
Apache:
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Caddy:
header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Läuft die Konfiguration ein paar Wochen sauber, die Domain auf hstspreload.org zur Preload-Aufnahme einreichen. Die Aufnahme ist schwer rückgängig zu machen. Nur einreichen, wenn Sie sicher sind, dass jeder Host unter Ihrer Domain HTTPS sauber ausliefert.
Vorsicht beim Rollout: Wer am ersten Tag direkt mit dem vollen
Zwei-Jahres-Wert startet und nachträglich eine HTTP-only-Subdomain
findet (etwa ein vergessenes internes Staging), macht sie für zwei
Jahre unerreichbar. Sicherer Pfad: mit max-age=300 für ein paar
Tage starten, dann max-age=86400 für eine Woche, dann auf den
vollen Wert hochziehen. So haben Sie Zeit, etwaige Nachzügler-
Subdomains zu finden.
Mehr dazu
- hstspreload.org: Einreichungs-Portal für die Preload-Liste.
- OWASP HSTS Cheat Sheet
- RFC 6797 — HSTS-Spezifikation