PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache2 SSL namensbasierte virtuelle hosts



myp
07.05.09, 22:28
Hallo,

auf meinem Apache 2 laufen mehrere namensbasierte virtuelle hosts über dieselbe IP-Adresse. Über HTTP läuft das auch wunderbar. Das sowas über HTTPS nicht geht ist mir klar, da der Server ja zuerst den SSL Handshake ausführt und dann erst den ihm übergebenen Servernamen auswertet und dann im Browser die hübsche Warnung kommt, dass der aufgerufene Servername nicht mit dem Zertifikat übereinstimmt, wenn die aufgerufene Domain nicht die mit dem Zertifikat war.
Mein Problem ist nun folgendes:
Ich habe in meiner SSL-Konfigurationsdatei zwei Subdomains, webmail.beispiel.de und wasanderes.beispiel.de, welche über ein *.beispiel.de Zertifikat abgedeckt sind. Wenn ich nun aber https://beispiel2.de in meinem Browser aufrufe lande ich immer auf der Seite von webmail.beispiel.de und der Browser schreit das der Servername nicht mit dem Zertifikat übereinstimmt. Ist ja klar, da alle Domains auf dieselbe IP zeigen.
Gibt es nun irgendeinen Trick oder irgendwas was ich machen kann sodass alle Anfragen an den Server mit https://domain.tld, ausser webmail.beispiel.de und wasanderes.beispiel.de, auf http://domain.tld umgeleitet werden oder z.B eine übliche Fehlermeldung kommt mit "Seite nicht gefunden" oder so ohne das zuvor der Browser noch schreit das der Servername nicht mit dem Zertifikat von *.beispiel.de übereinstimmt?
Bisher endeten nämlich alle meine Versuche damit das zuerst die Fehlermeldung im Browser kam und dann nach dem hinzufügen der Ausnhame im Browser die aufgerufene Domain auf http://... umgeleitet wurde.

Ich hoffe das mir jemand von euch bei meinem Problem helfen kann. Bastel da nun schon ewig dran rum ohne auf einen grünen Zweig zu kommen.
Auf dem Server läuft Debian Etch mit Apache2 aus Lenny (2.2.9-10).

Gruss
Martin

derRichard
07.05.09, 22:34
hi!

soweit ich weiss brauchst du pro ssl-host eine eigene ip.
trick gibt es dabei afaik keinen.

//richard

myp
07.05.09, 22:52
Ja, das ist mir klar das ich dafür für jeden virtuellen Host eine eigene IP brauche für SSL, weil dort keine namensbasierte virtuelle hosts gehen. Aber ich will ja sowas auch garnicht. Mir reicht es eine von den Domains per SSL zu erreichen mit einem Wildcard-Zertifikat. Ich will nur irgendwie vermeiden das ich auf der Seite der einen Domain lande, wenn ich eine andere Domain mit https aufrufe. Der Aufruf soll dann einfach ins Leere gehen oder auf http umgeleitet werden.
Ich hoffe das es verständlich ist was ich hier versuche zu erreichen.

Gruss Martin

SirSydom
08.05.09, 06:10
Dann mach doch einen "default" vhost in dem du alle anfragen an unbekannte hostname auffängst und leite dann dort mit mod_rewrite nach belieben weiter (z.B. auch auf den Non-SSL-Vhost)

marce
08.05.09, 06:12
Du könntest versuchen, über ein im entsprechenden VHost eingepflegtes Rewrite dann die Adresse umzubiegen - ist aber gerade nur eine Idee...

myp
08.05.09, 13:13
Das mit mod_rewrite habe ich schon versucht.
Ich habe dazu im SSL Vhost von webmail.beispiel.de, wo momentan irgendwie alle anfragen landen die keinen extra Eintrag haben, eine rewrite Regel definiert die alle https-Adressen, ausser webmail.beispiel.de und wasanderes.beispiel.de, auf http-Adressen umschreibt.
Nur was mich daran noch stört ist das bevor er die Adresse auf http umschreibt trotzdem zuerst noch im Browser meckert, dass das Zertifikat nicht zum aufgerufenen Servernamen passt. Erst wenn ich dann im Browser das Zertifikat akzeptiere leitet er mich auf http um.
Ich hätte das Ganze aber gern so das es ohne Zertifikatwarnung im Browser geht. Wie gesagt, mir würde es ja schon vollkommen reichen, wenn einfach nur webmail.beispiel.de und wasanderes.beispiel.de über SSL zu erreichen sind und bei den ganzen restlichen Anfragen/Domains über SSL eine Fehlermeldung kommt das die Seite nicht existiert oder so. Also eine typische Fehlermeldung im Browser und nichts selbstgemachtes.