Ich versuche, unsere Server so einzurichten, dass Datenverkehr über SSL zugelassen wird. Mir ist bekannt, dass SSL nicht mit Name Virtual Host funktioniert, aber wir haben alle Apache-Server auf virtuellen Maschinen mit dedizierten privaten IPs. Wir haben eine primäre virtuelle Maschine, die über mod_proxy eingerichtet ist, um den Verkehr an die entsprechenden vms weiterzuleiten.
Um den https-Verkehr weiterzuleiten, müssen das Zertifikat und die vms auf dem Proxy installiert sein. Wir haben ein Wildcard-Zertifikat, das von allen Hosts verwendet werden kann. Alles scheint einwandfrei zu funktionieren, aber ich erhalte in den Apache-Protokollen für den Proxy Folgendes:
[warn] Init: SSL-Server-IP/Port-Konflikt: Host1.domain.com:443 (/ etc/Apache2/sites-enabled/Host1: 1) vs. Host2.domain.com:443 (/ etc/Apache2/sites- aktiviert/Host2: 1)
Für jeden Host, den wir auf dem Proxy eingerichtet haben, wird eine dieser Fehlernachrichten angezeigt. Unser Virtual Host-Setup für den Proxy ist unten aufgeführt:
<VirtualHost ipaddress:443>
ServerName Host1.domain.com
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / https://privateip:443/
ProxyPassReverse / https://privateip:443/
SSLProxyEngine on
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
</VirtualHost>
Gibt es eine Möglichkeit, wie ich das zum Laufen bringen kann?
Es hört sich an, als würde Apache Sie warnen, dass Sie über mehrere <VirtualHost>
-Abschnitte mit derselben IP-Adresse und demselben Port verfügen ... Damit es ohne Warnungen funktioniert, denke ich, dass Sie so etwas wie Server Name Indication (SNI) verwenden müssen Art und Weise zur Identifizierung des als Teil des SSL-Handshakes angeforderten Hostnamens. Grundsätzlich können Sie ein namenbasiertes virtuelles Hosting über SSL durchführen, aber ich bin nicht sicher, wie gut es von Browsern unterstützt wird. Anders als bei SNI sind Sie grundsätzlich auf einen SSL-aktivierten Domänennamen für jede IP-Adresse beschränkt, die Sie dem öffentlichen Internet zugänglich machen.
Wenn Sie in der Lage sind, ordnungsgemäß auf die Websites zuzugreifen, werden Sie die Warnungen natürlich gut ignorieren. Diese sind nicht sehr ernst - sie sind hauptsächlich ein Hinweis darauf, worauf Sie bei Problemen achten sollten
Soweit ich weiß, unterstützt Apache SNI seit Version 2.2.12 Leider spiegelt die Dokumentation diese Änderung noch nicht wider.
Gehen Sie zu http://wiki.Apache.org/httpd/NameBasedSSLVHostsWithSNI , bis dies abgeschlossen ist
Möglicherweise können Sie Folgendes ersetzen:
VirtualHost ipaddress:443
mit
VirtualHost *:443
Sie müssen dies wahrscheinlich auf allen Ihren Virt-Hosts tun.
Es wird wahrscheinlich diese Nachricht aufklären. Lassen Sie sich die Anweisung ServerName um das Weiterleiten der Nachrichtenanforderung kümmern.
Möglicherweise können Sie dies auch nicht tun, wenn Sie mehrere IP-Aliasnamen auf demselben Computer haben.
Der VirtualHost würde so aussehen:
NameVirtualHost IP_Address:443
<VirtualHost IP_Address:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt # Where "ca" is the name of the Certificate
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
ServerAdmin [email protected]_name.com
DocumentRoot /var/www/html
ServerName www.domain_name.com
ErrorLog logs/www.domain_name.com-error_log
CustomLog logs/www.domain_name.com-access_log common
</VirtualHost>
Zuerst benötigen Sie NameVirtualHost ip: 443 in Ihrer Konfigurationsdatei! Sie haben wahrscheinlich eine mit 80 am Ende, aber Sie benötigen auch eine mit 443.
Zweitens benötigen Sie ein * .domain-Zertifikat (Wildcard) (es ist möglich, eines zu erstellen)
Drittens können Sie nur etwas machen. Domänenwebs in einer IP (aufgrund des Zertifikats)
Apache unterstützt SSL nicht auf namenbasierten virtuellen Hosts, sondern nur auf IP-basierten virtuellen Hosts.
Quelle: Apache 2.2 SSL FAQ - Frage Warum kann kein namenbasiertes virtuelles Hosting zum Identifizieren verschiedener virtueller SSL-Hosts verwendet werden?
Im Gegensatz zu SSL erlaubt die TLS-Spezifikation namenbasierte Hosts (SNI, wie von anderen erwähnt), aber Apache unterstützt diese Funktion noch nicht. Es wird voraussichtlich in einem zukünftigen Release gegen OpenSSL 0.9.8 kompiliert.
Mod_gnutls behauptet ebenfalls, SNI zu unterstützen, aber ich habe es nie probiert.
Sie MÜSSEN einen Unterteil hinzufügen, um die NameVirtualHost
-Funktionalität mit der angegebenen IP zu aktivieren.
NameVirtualHost IP_Address:443