Okt 29 2009
Apache2 – SSL erzwingen bzw. HTTP-Zugriffe umleiten
Ich habe mir gestern Abend mal testweise ein SSL-Zertifikat erstellt, das kann man ja für den Apache2 und mit OpenSSL inzwischen ziemlich einfach machen. Das Zertifikat alleine reichte ja nicht, ich musste also auch einen vhost dafür einrichten – gut, das war jetzt auch nicht schwierig. Interessant wurde die Sache dann, als ich mir überlegt habe, dass es ja in vielen Dingen erforderlich ist, dass eine Verbindung ausschließlich über SSL und Port 443 möglich, ein “Initialzugriff” aber auch über HTTP und Port 80 möglich sein soll.
Das hätte den Vorteil, dass der entsprechende vhost auch dann erreichbar wäre, wenn man vergessen würde, https vor die Verbindung zu schreiben. Wie realisiert man so etwas mit möglichst geringem Aufwand? Eine Umleitung mit einem (PHP-)Skript ist schnell geschrieben aber natürlich vollkommen übertrieben und “uncool”. Interessanter ist bei so etwas natürlich eine mod_rewrite-Variante, die alles gleich über den Apache direkt regelt. Wie kann so etwas aussehn? Nach einigen Tests mit Conditions und der einhergehenden Studie der Dokumentation von mod_rewrite, habe ich folgende Lösung geschrieben, die wunderbar funktioniert:
Der eigentliche vhost
Hier würden auch directory-, Authentication-, und ähnliche Anweisungen erfolgen.
<VirtualHost 127.0.0.1:443>
ServerName localhost:443
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
</VirtualHost>
Das ist der “Dummy”-vhost
Dieser vhost dient dann nur noch dazu um eine Umleitung auf den oberen “443-vhost” zu machen.
<VirtualHost localhost:80>
ServerName localhost
# Das folgende erzwingt SSL
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

August 19th, 2011 at 17:47
[...] geht’s ins Nirwana. Das ist unschön und so basteln wir uns eine Umleitung, wie z.B. hier beschrieben mit einem zweiten vhost in der [...]
Januar 19th, 2012 at 14:44
[...] ich das nächste mal nicht wieder Stunden in google verbringe: Force SSL Secure Debian Configure [...]