Suffer
01.11.07, 17:43
Hallo,
ist es möglich einen apache auf einem (!) Port laufen zu lassen und alle HTTP-Anfragen auf diesen Port in HTTPS-Anfragen umzuwandeln?
Ein erster intuitiver Ansatz schlägt fehl:
<VirtualHost *:35000>
RewriteEngine On
#RewriteCond %{SERVER_PROTOCOL} HTTP
RewriteCond %{HTTPS} !^on$ [NC]
RewriteRule ^(.*) https://%{HTTP_HOST}$1 [R,L]
SSLEngine on
SSLCertificateFile /etc/apache2/apache.crt
SSLCertificateKeyFile /etc/apache2/apache.key
</VirtualHost>
Wenn ich mit HTTP zugreife, kommt die Fehlermeldung "You are speaking plain HTTP to an SSL-enabled server port" (klar, weil SSLEngine eben "on" ist). Und greife ich mit HTTPS darauf zu, kommt das Rewrite nicht zum Tragen.
Die naheliegenste Lösung wäre natürlich das auf 2 Ports laufen zu lassen (35080 und 35443 z.B.), aber das möchte ich wenn möglich vermeiden.
ist es möglich einen apache auf einem (!) Port laufen zu lassen und alle HTTP-Anfragen auf diesen Port in HTTPS-Anfragen umzuwandeln?
Ein erster intuitiver Ansatz schlägt fehl:
<VirtualHost *:35000>
RewriteEngine On
#RewriteCond %{SERVER_PROTOCOL} HTTP
RewriteCond %{HTTPS} !^on$ [NC]
RewriteRule ^(.*) https://%{HTTP_HOST}$1 [R,L]
SSLEngine on
SSLCertificateFile /etc/apache2/apache.crt
SSLCertificateKeyFile /etc/apache2/apache.key
</VirtualHost>
Wenn ich mit HTTP zugreife, kommt die Fehlermeldung "You are speaking plain HTTP to an SSL-enabled server port" (klar, weil SSLEngine eben "on" ist). Und greife ich mit HTTPS darauf zu, kommt das Rewrite nicht zum Tragen.
Die naheliegenste Lösung wäre natürlich das auf 2 Ports laufen zu lassen (35080 und 35443 z.B.), aber das möchte ich wenn möglich vermeiden.