Vom: 29.01.2014

HTTPS für alle! Redirect aller Requests auf SSL ohne Veränderung.

Hier mal wieder ein Codeschnipsel, den wir immer wieder brauchen und fast genauso oft "ergooglen" müssen. Ich verewige das daher mal in unserem Blog ;-)

Bequemes Herstellen der Vertraulichkeit

Artikelbild_httpsGefragt ist hier die Weiterleitungen aller Requests an einen Apache-Webserver über http an ihre Pendants über https. Im Zeitalter des globalen Abhörens von allem durch wohl so ziemlich alle Geheimdienste dieser Welt ist dies ein von unseren Kunden immer öfter gewünschtes Feature. Die Benutzer einer Webseite sind sich oft nicht bewußt, dass Ihr Besuch auch über eine verschlüsselte Verbindung stattfinden könnte. Man kann sie mit dieser Lösung sanft zu ihrem Glück zwingen.

Die Lösung für mod_rewrite: redirect auf https

Vorraussetzung ist ein installiertes mod_rewrite, die Zeilen können in

  • der allgemeinen httpd.conf (nicht so sinnvoll),
  • im Virtualhost oder
  • in der Datei .htaccess im Document Root

des Auftritts untergebracht werden. Hier die beiden Zeilen - die erste erübrigt sich, wenn man ohnehin schon Regeln zum Einsatz bringt.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Dabei wird eine URL einfach nur auf https umgeschrieben, aus einem http://www.weblizards.de/blog würde also ein https://www.weblizards.de/blog. Die Condition der zweiten Zeile verhindert übrigens, dass diese Regel für eine Anfrage per https greift - es würde sonst eine Schleife entstehen. Diese Regel funktioniert übrigens, wenn auf Port 443, also dem Port für https-Verbindungen, kein Apache lauscht, also z.B. ein eine Tomcat, Glassfish, Jira oder ähnliches)