Mehrere Domains mit SSL auf derselben IP


Antworten:


28

Ich halte es für eine gute Idee, das Problem mit virtuellen Hosts und SSL / TLS zu erklären.

Wenn Sie über HTTP eine Verbindung zu einem Apache-Server herstellen, senden Sie eine Reihe von HTTP-Headern mit. Sie sehen so aus:

GET /index.html HTTP/1.1
 Host: www.nice-puppies.com

Wenn Sie über ein virtuelles Hosting verfügen, wird Apache das Hosts-Feld prüfen. Rufen Sie dann die richtige index.html für Sie ab. Das Problem ist, wenn Sie SSL / TLS hinzufügen. Der Server richtet die Verschlüsselung ein, bevor Sie jemals eine http-Anfrage senden. Daher weiß der Server erst nach Abschluss der Authentifizierung / Verschlüsselung, ob Sie zu www.nice-puppies.com oder www.evil-haxxor.com gehen. Der Server kann nicht erraten (da das Senden des falschen Zertifikats eine böse Fehlermeldung verursacht).

Eine Lösung ist ein Wildcard-Zertifikat (wie oben erwähnt), das für * .nice-puppies.com gültig ist. Auf diese Weise können Sie dasselbe Zertifikat für mehrere Domains verwenden, aber Sie können kein * .com-Zertifikat haben (okay, das können Sie, aber es wäre für alle anderen sehr schlecht). Im Allgemeinen benötigen Sie für jedes Zertifikat eine separate IP-Adresse HTTPS-Domäne.


4
Gute Erklärung, aber Sie könnten ein UC-Zertifikat haben, das mehrere Domains in einem Zertifikat zulässt
Sam Cogan

1
Ja, Sie können über Unified Communications-Zertifikate (UCC / UC-Zertifikate) verfügen. Ich hätte sie wahrscheinlich erwähnen sollen. Sie werden, soweit ich gesehen habe, hauptsächlich mit Exchange / Office Communication Server verwendet. Und wenn Sie dasselbe Zertifikat für verschiedene Sites verwenden, missbrauchen Sie die x509-Semantik. Sie funktionieren jedoch auf den meisten TLS-Stacks.
Pehrs

6
Auch SNI. Ihre Aussage ist nicht mehr endgültig, Pehrs. Ihre Erklärung ist historisch korrekt, spiegelt jedoch nicht mehr die aktuellen Technologien wider.
Warner

4
SNI funktioniert (noch?) Nicht mit IE6 unter Windows XP. Welche Art von begrenzt den Wert unter Berücksichtigung des Marktanteils. Ich glaube, der ursprüngliche Benutzer war mehr an dem interessiert, was passieren würde, als an den Hacks, die es gibt, um das Problem zu umgehen.
Pehrs

Es wurde versucht, den Rechtschreibfehler am Ende von SHTTP zu HTTPS zu korrigieren, dies wurde jedoch als zu kleine Bearbeitung abgelehnt.
Stuart

8

Die eigentliche Lösung für dieses Problem ist "Server Name Indication":

http://en.wikipedia.org/wiki/Server_Name_Indication

Es fängt erst an, auf Servern und Web-Clients ausgerollt zu werden, daher können Sie es jetzt nicht wirklich verwenden, aber hoffentlich wird dies in ein paar Jahren kein so großes Problem sein.


2

Das Problem ist, dass das SSL-Zertifikat an die IP-Adresse und nicht an den Hostnamen gebunden ist. Wenn die Verbindung über die IP-Adresse für eine HTTPS-Anforderung hergestellt wird, müssen Sie zunächst die SSL-Kommunikation herstellen, indem Sie das Serverzertifikat und / oder das Clientzertifikat übergeben. Während dieser Phase des Verbindungs-Handshakes kann der Apache-Server nicht wissen, wozu die Anforderung dient. Dies ist beim HTTP-Verkehr (Nicht-SSL) anders, da der Apache-Server nach dem Verbindungsaufbau die zu verwendende Konfiguration des virtuellen Hosts bestimmen kann, wenn der Client den HostHeader sendet oder ihn an den ersten konfigurierten virtuellen Host weitergibt.

Wenn Sie mehrere virtuelle Hosts unter derselben Domäne hatten, können Sie ein einzelnes Platzhalterzertifikat für die IP-Adresse einrichten und mehrere virtuelle Hosts mit unterschiedlichen Servernamen definieren. Wenn sich diese Servernamen jedoch nicht unter demselben Domänennamen befinden, werden Client-Server-Fehler generiert. Dies würde funktionieren, da das Platzhalterzertifikat für alle Hostnamen unter diesem Domainnamen gültig wäre. Sie benötigen eine andere IP-Adresse, wenn sich die Domänennamen unterscheiden, da das erste für diese IP-Adresse definierte Zertifikat für die Verbindung von Clients angezeigt wird.


1

Dies kann zu einem einzelnen SSL-Zertifikat als SAN (Subject Alternative Name) hinzugefügt werden. In meiner Not musste ich ein Zertifikat der Organisation beantragen. Ich habe Globalsign verwendet.


1

Tatsächlich KÖNNEN Sie mit moderner Software mehrere HTTPS-Sites über eine einzige IP-Adresse mit einer neuen Funktion namens "SNI - Server Name Indication" bedienen.

http://en.wikipedia.org/wiki/Server_Name_Indication

http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

Ich habe das selbst noch nicht benutzt, aber es klingt gut für interne und Intranetseiten. Die meisten modernen Browser unterstützen SNI. IE6 unterstützt SNI nicht, IE7 jedoch.

(Korrektur: 20100426 - SNI wird unter Windows XP überhaupt nicht unterstützt. Windows Vista und höher unterstützen SNI. Siehe "Abschnitt 2.2.3" unter http://msdn.microsoft.com/en-us/library/dd208005%. 28v = PROT.13% 29.aspx # id8 ).


2
Bei IE kommt die Unterstützung nicht von der IE-Version, sondern von der zugrunde liegenden Betriebssystemversion. Vista und höher unterstützen SNI. XP nicht, selbst mit IE8 unter XP erhalten Sie kein SNI.
Nasko

1

Ich arbeite an demselben Thema. Als mein Test unterstützen IE7 und höher (nur in Win7 & Vista) / Chrome / Firefox / Safari / Opera "Server Name Indication". In der Tat, wenn Browser Tsl 1.0 verwendet, unterstützt es "Server Name Indication".


0

Ich denke, dass das OP fragt, was passiert, wenn er ein SSL-Zertifikat zu einer IP hinzufügt, die viele virtuelle Hosts hat. Wenn keiner der anderen virtuellen Hosts ein SSL-Zertifikat verwendet, sollte er im Klartext sein.


Nun, ich bin verwirrt über die Frage. Der Titel des Q sagt schwarz, der Inhalt sagt weiß.
Iraklis

Dies ist der Weiße
Iraklis


0

Wenn Sie versuchen, zwei Zertifikate auf derselben IP hinzuzufügen, wird überall nur das zuerst gelesene Zertifikat verwendet. Eine IP - ein SSL-Zertifikat.

Wenn Sie mehr SSL-Zertifikate für dieselbe IP erhalten möchten, sollten Sie in Betracht ziehen, ein Mehrfachdomänenzertifikat (sogenanntes UCC - check it out @ godaddy ) oder ein Wildcard-Zertifikat (teurer) zu erwerben.


Sie meinen, das zuerst in Apache Conf hinzugefügte Zertifikat wird für beide verwendet?
Nitins

1
Wenn Sie zwei Zertifikate haben - für Site A und B und Apache die Konfiguration für Hosts in der Reihenfolge A.conf und B.conf lädt, wird das Zertifikat von A.conf verwendet. Oder umgekehrt.
Andrejs Cainikovs
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.