Ich weiß, dass zum Einrichten von SSL eine dedizierte IP-Adresse erforderlich ist. Was passiert, wenn wir SSL für Domains hinzufügen, die eine IP gemeinsam nutzen? (Namevirtualhost)
apache-2.2
ssl
https
certificate
Nitine
quelle
quelle
Antworten:
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:
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.
quelle
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.
quelle
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
Host
Header 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.
quelle
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.
quelle
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 ).
quelle
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".
quelle
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.
quelle
Ein UC-Zertifikat ist definitiv der richtige Weg: http://www.sslshopper.com/unified-communications-uc-ssl-certificates.html
quelle
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.
quelle