HTTP Strict-Transport-Security

Veröffentlicht am

Die IETF hat Ende 2012 mit HTTP-Strict-Transport-Security (RFC 6797) einen neuen Internetstandard verabschiedet, der Useragents mitteilen soll, dass die Kommunikation mit einer Webseite nur über verschlüsselte und zertifizierte TLS-Verbindungen abgewickelt werden soll. Damit soll verhindert werden, dass der Benutzer beim ersten Verbindungsaufbau zur unverschlüsselten Version von einem Man-In-The-Middle attackiert werden kann, der die Weiterleitung zur verschlüsselten HTTPS-Version verhindert und somit die Verbindung manipulieren kann. Der Benutzer tippt nämlich in der Regel nur den Domainnamen ohne Protokoll in die Adressleiste seines Browsers und ist somit über die erste unverschlüsselte Verbindung angreifbar.

Wenn ein Webseitenbetreiber den Useragents mitteilen möchte, dass diese nur noch verschlüsselte und beglaubigte Verbindungen zur Webseite aufbauen sollen, dann setzt dieser im HTTP Response-Header der verschlüsselten Version den HSTS-Header mit einer Ablaufzeit, der dann vom Useragent zwischengespeichert wird. Wenn der Benutzer nun das nächste mal den Domainnamen ohne Protokoll in die Adressleiste seines Browser eingibt (oder einem Link auf einer Webseite folgt der auf die unverschlüsselte Version zeigt) dann baut der Useragent sofort eine verschlüsselte Verbindung zur Webseite auf.

HSTS-Header im Apache setzen

Um den HSTS-Header in der Apache-Konfiguration eines VirtualHosts setzen zu können wird das aktivierte Modul mod_headers benötigt. Danach kann man in Apache-Konfigurationen folgendermaßen den HSTS-Header setzen:

Header always set Strict-Transport-Security "max-age=15552000"