Was ist HSTS und wie kann ich es auf meiner Website aktivieren?

SSL 2 Min. Lesezeit

HSTS (HTTP Strict Transport Security) ist ein Sicherheitsmechanismus: Die Website weist den Browser des Besuchers mittels eines Header-Feldes an, die Seite für einen bestimmten Zeitraum ausschließlich über eine verschlüsselte HTTPS-Verbindung zu öffnen, selbst wenn der Besucher eine Adresse im Format http:// eingibt oder auf einen veralteten Link klickt.

Warum ist dies erforderlich?

Das SSL-Zertifikat und die HTTPS-Weiterleitung bieten für sich genommen keinen vollständigen Schutz. Wenn ein Besucher die Seite über HTTP aufruft, erfolgt die erste Anfrage unverschlüsselt, und erst die Antwort des Servers leitet den Datenverkehr auf HTTPS um. In einem öffentlichen WLAN kann ein Angreifer diese erste Anfrage abfangen und den Besucher auf einer gefälschten, unverschlüsselten Seite halten (SSL-Stripping). HSTS schließt diese Sicherheitslücke: Der Browser wechselt bereits vor dem Absenden der Anfrage zu HTTPS.

HSTS bietet einen zusätzlichen Schutz: Ist das Zertifikat fehlerhaft, lässt der Browser nicht zu, dass der Besucher die Warnung ignoriert und die Seite dennoch aufruft.

Aufbau der Kopfzeile

Strict-Transport-Security: max-age=31536000; includeSubDomains
  • max-age: Wie viele Sekunden soll der Browser die Regel speichern (31.536.000 Sekunden = 1 Jahr).
  • includeSubDomains: Diese Regel gilt auch für alle Subdomains.
  • preload: Gibt an, dass die Domain in die in den Browsern integrierte HSTS-Liste aufgenommen werden soll (siehe unten).

Der Browser berücksichtigt nur Header, die über HTTPS empfangen wurden; bei Übermittlung über HTTP sind diese unwirksam.

Aktivieren

Apache oder LiteSpeed (.htaccess):

<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>

Nginx: im HTTPS-server-Block:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

Cloudflare: Wenn Ihre Domain hinter Cloudflare liegt, können Sie diese Funktion auf der Seite „SSL/TLS > Edge-Zertifikate“ im Abschnitt „HTTP Strict Transport Security (HSTS)“ aktivieren.

Nach der Aktivierung können Sie in den Entwicklertools Ihres Browsers (Registerkarte „Netzwerk“, unter den Antwort-Headers des Dokuments) oder mit dem Befehl „curl -sI https://pelda.hu | grep -i strict“ überprüfen, ob der Header empfangen wird.

Schrittweise Einführung

Da der Browser die Regel für die Dauer von „max-age“ speichert und diese Einstellung von den Besuchern nicht rückgängig gemacht werden kann, empfiehlt es sich, Schritt für Schritt vorzugehen:

  1. Bitte überprüfen Sie, ob alle Seiten und Ressourcen fehlerfrei über HTTPS funktionieren und keine gemischten Inhalte enthalten.
  2. Beginnen Sie mit einer kurzen Zeitangabe, beispielsweise „max-age=300“ (5 Minuten), und verzichten Sie dabei auf „includeSubDomains“.
  3. Wenn einige Tage lang keine Probleme auftreten, verlängern Sie den Zeitraum zunächst auf eine Woche und anschließend auf ein Jahr.
  4. Die Option „includeSubDomains“ sollte nur dann aktiviert werden, wenn für jede Subdomain (z. B. mail., teszt., interne Systeme) ein gültiges Zertifikat vorliegt.

HSTS-Vorabladung

Browser verfügen zudem über eine integrierte Liste jener Domains, die bereits beim ersten Besuch ausschließlich über HTTPS geöffnet werden. Sie können die Aufnahme in diese Liste auf der Seite hstspreload.org beantragen, sofern der Header einen „max-age“-Wert von mindestens einem Jahr sowie die Schalter „includeSubDomains“ und „preload“ enthält. Die Entfernung aus der Liste kann Monate dauern; wählen Sie diese Option daher nur, wenn Sie sicher sind, dass alle Subdomains der Domain dauerhaft über HTTPS verfügbar bleiben.

Zurück: SSL-Artikel (35)