Apache2 – SSL erzwingen bzw. HTTP-Zugriffe umleiten
Oktober 29th, 2009 08:51 Uhr von
Ronald
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.
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.
ServerName localhost
# Das folgende erzwingt SSL
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
Geschrieben in Allgemeines, Linux |
Keine Kommentare »






