Firefox und Strict-Transport-Security funktioniert! Und wie!
From
Raphael Eiselstein <rabe@...>
Date
Hallo zusammen,
Hintergrund: Seit einiger Zeit laeuft das UUGRN-Wiki https-only und
auch der Artikelnamensraum ist im URL unter /, d.h. die Hauptseite
ist erreichbar unter https://wiki.uugrn.org/Hauptseite
Frueher war diese unter http://wiki.uugrn.org/wiki/Hauptseite zu finden.
Damit alte URLs gueltig bleiben, habe ich dafuer folgende Redirects im
VirtualHost fuer HTTP eingerichtet:
--------------------------------------------------------------
<VirtualHost *:80>
ServerName wiki.uugrn.org
Redirect /wiki/index.php https://wiki.uugrn.org/index.php
Redirect /wiki/ https://wiki.uugrn.org/
Redirect / https://wiki.uugrn.org/
</VirtualHost>
--------------------------------------------------------------
Das fuehrt erwartungsgemaess dazu, dass der Server auf eine Anfrage mit
einem 302 antwortet ("http" vs "https" und "/" vs "/wiki" beachten):
--------------------------------------------------------------
$ curl --output /dev/null --silent -D - http://wiki.uugrn.org/wiki/Hauptseite
HTTP/1.1 302 Found
Server: Apache
Date: Sat, 12 Apr 2014 22:42:21 GMT
Location: https://wiki.uugrn.org/Hauptseite
Content-Length: 217
Content-Type: text/html; charset=iso-8859-1
--------------------------------------------------------------
Der VirtualHost fuer https://wiki.uugrn.org/ sieht so aus:
--------------------------------------------------------------
<VirtualHost *:443>
ServerName wiki.uugrn.org
Include /…/ssl/…/httpd_ssl.conf
SSLProxyEngine on
ProxyPass / https://wiki.uugrn.lan/ connectiontimeout=5 timeout=30
ProxyPreserveHost On
BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
Header always set Strict-Transport-Security "max-age=31536000"
</VirtualHost>
--------------------------------------------------------------
Alle Requests die auf https://wiki.uugrn.org/ reinkommen werden intern
an https://wiki.uugrn.lan/ durchgereicht (unter Beibehaltung des
Host-Headers) und dort dann verarbeitet. Es gibt hier keine redirects
oder rewriting mehr, das war ja nur im Kontext von HTTP erforderlich fuer
die alten Wiki-URLs.
==> Neu ist hier der Header Strict-Transport-Security, den ich im Rahmen
der "SSL-Optimierung" in den letzten Tagen eingebaut habe.
Dieser Response-Header signalisiert dem Client, also dem Webbrowser, dass
der Inhalt dieser Webseite kuenftig *nur* und *ausschliesslich* per HTTPS
angefragt werden soll bzw. niemals per HTTP.
https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
==> Wirkt sofort: Ein Bookmark in meinem Firefox zeigt noch auf
http://wiki.uugrn.org/wiki/Hauptseite und ich lande damit auf
https://wiki.uugrn.org/Wiki/Hauptseite was in dieser Form nicht
existiert. Auf den ersten Blick fuer mich ein Bug mit den Redirect-Regeln
im Reverse-Proxy, auf den zweiten Blick dann doch nicht.
Was ist passiert? Firefox hat den Request – aufgrund von HTST – gar
nicht erst per HTTP rausgeschickt (wo dann der Redirect vom Webserver
auf HTTPS gekommen waere) sondern direkt auf HTTPS und somit auch vorbei
an den Redirect-Regeln fuer /wiki/ im VirtualHost fuer HTTP.
Korrekt waere in diesem Fall, die beiden Redirects aus dem
HTTP-VirtualHost in den HTTPS-VirtualHost zu uebernehmen, d.h. im
HTTP-VHost ausschliesslich "/" nach "https://wiki.uugrn.org/" umzuleiten
und dann im HTTPS-Vhost die alten URIs unter "/wiki/" nach "/"
umzuleiten. Dann klappt das auch mit HSTS.
Sichere Gruesse
Raphael
--
Raphael Eiselstein <rabe@...> http://rabe.uugrn.org/
PGP (neu): 4E63 5307 6F6A 036D 518D 3C4F 75EE EA14 F625 DB4E
.........|.........|.........|.........|.........|.........|.........|..
--
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/