2008-08-12 7 views
7

Was ist der beste Weg, URL transparent über eine SSL-Verbindung mit Apache 2.2 neu zu schreiben?Verwenden von "mod_rewrite" zum Imitieren von SSL Virtual Hosts?

Apache 2 unterstützt nativ nicht mehrere namensbasierte virtuelle Hosts für eine SSL-Verbindung und ich habe gehört, dass mod_rewrite dabei helfen kann. Ich möchte so etwas wie dies tun:

ich den Server eingerichtet haben, so dass die Seiten von

https://secure.example.com/dbadmin

zugegriffen werden kann, aber ich möchte dies als Standard https://dbadmin.example.com

Wie Richte ich es so ein, dass die Rewrite-Regel dbadmin.example.com in secure.example.com/dbadmin umschreibt, aber das Neuschreiben in der Adresszeile des Clients nicht anzeigt (dh der Client sieht dbadmin.example.com immer noch) , überall auf https?

Antwort

3

Konfigurieren Sie einen einzelnen VirtualHost, um sowohl secure.example.com als auch dbadmin.example.com zu bedienen (was es zu dem einzigen * macht: 443 VirtualHost erreicht dies). Sie können dann mod_rewrite verwenden, um die URI für Anforderungen an dbadmin.example.com anzupassen:

<VirtualHost *:443> 
    ServerName secure.example.com 
    ServerAlias dbadmin.example.com 

    RewriteEngine on 
    RewriteCond %{SERVER_NAME} dbadmin.example.com 
    RewriteRule !/dbadmin(.*)$ /dbadmin$1 
</VirtualHost> 

Ihr SSL-Zertifikat wird für beide secure.example.com und dbadmin.example.com gültig sein müssen. Es kann ein Wildcard-Zertifikat sein, wie von Terry Lorber erwähnt, oder Sie können das Feld subjectAltName verwenden, um zusätzliche Host-Namen hinzuzufügen.

Wenn Sie Probleme haben, richten Sie es zuerst unter <VirtualHost *> ein und überprüfen Sie, ob es ohne SSL funktioniert. Die SSL-Verbindung und das Zertifikat sind eine separate Komplexitätsebene, die Sie nach dem URI-Umschreiben einrichten können.

0

Es apaches mod_rewrite ist, oder Sie das Setup Apache könnte https://dbadmin.example.com zu path/to/example.com/dbadmin auf dem Server

<VirtualHost *> 
ServerName subdomain.domain.com 
DocumentRoot /home/httpd/htdocs/subdomain/ 
</VirtualHost> 
2

Sofern Ihr SSL-Zertifikat ist die "Wildcard" oder Multi-Site leiten nett, dann denke ich nicht, dass das funktionieren wird. Das Neuschreiben wird im Browser angezeigt und der Name in der Adressleiste muss für das Zertifikat gültig sein, oder Ihre Benutzer sehen einen Sicherheitsfehler (den sie immer akzeptieren und fortführen können, aber das klingt nicht wie gewünscht)).

Mehr here.