HSTS - HTTP Strict Transport Security

Diesen Beitrag schrieb ich 9 Jahre und 2 Monate zuvor; die nachfolgenden Ausführungen müssen heute weder genau so nach wie vor funktionieren, noch meiner heutigen Meinung entsprechen. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 1 Minute

RFC 6797 beschreibt den Internetstandard HTTP Strict Transport Security (HSTS): hier schickt dein Webserver einem Aufruf den Header Strict-Transport-Security zusammen mit (unter anderem) einer Zeitangabe. Vor Ablauf dieser Zeit erkennt der Empfänger – also beispielsweise der Browser deines Lesers – deine Webseite bei einem erneuten Besuch wieder und erzwingt die Verschlüsselung für alle im Zertifikat enthaltenen Subdomains.

HSTS und nginx

Die benötigte Einstellung kann wiederum in /etc/nginx/mods-enabled/ssl.conf vorgenommen werden; ich setze hier eine Zeitspanne von zwei Jahren (in Sekunden) fest:

## file: "/etc/nginx/mods-enabled/ssl.conf"
...
## SSL HSTS
add_header Strict-Transport-Security 'max-age=63072000; includeSubDomains; preload';
...

HSTS und apache2

Auch für apache2 kannst du die Einstellungen direkt in der SSL-Konfiguration vornehmen; so wird der Header automatisch gesetzt, wann immer SSL für eine Website aktiviert wird.

## file: "/etc/apache2/mods-enabled/ssl.conf"
...
## SSL HSTS
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
...

HSTS testen

Aus Chrome heraus kannst du testen, ob die neue Einstellung nach einem Restart des Webservers das gewünschte Verhalten nach sich zieht; alternativ nutzt du einen einfachen curl-Aufruf oder aber wiederum den Service der SSL Labs. Auch kannst du deine Webseite eintragen lassen, so dass fest hinterlegt wird, dass Inhalte deiner Webseite ausschließlich über HTTPS übertragen werden – dann solltest du dir aber sicher sein, dass du dein Setup für lange Zeit genau so beibehalten wirst, denn die Eintragung in die Liste kann sich über Monate hinziehen, und für eine Austragung gibt es meines Wissens nach keinen gesicherten Workflow.

$ curl -I https://www.unixe.de
HTTP/1.1 200 OK
Server: nginx/1.8.0
...
Strict-Transport-Security: max-age=63072000
...

Alle Bilder dieser Seite: © Marianne Spiller – Alle Rechte vorbehalten
Hintergrundbild: Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten

Eure Gedanken zu „HSTS - HTTP Strict Transport Security“

Ich freue mich über jeden Kommentar, es sei denn, er ist blöd. Deshalb behalte ich mir auch vor, die richtig blöden kurzerhand wieder zu löschen. Die Kommentarfunktion ist über GitHub realisiert, weshalb ihr euch zunächst dort einloggen und „utterances“ bestätigen müsst. Die Kommentare selbst werden im Issue-Tracker und mit dem Label „✨💬✨ comment“ erfasst – jeder Blogartikel ist ein eigenes Issue. Über GitHub könnt ihr eure Kommentare somit jederzeit bearbeiten oder löschen.