HSTS - HTTP Strict Transport Security
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
...
Hintergrundbild: Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten