Frage

Ich bin versucht, die Einrichtung unseres Server-Datenverkehr über SSL zu ermöglichen. Ich bin mir bewusst, dass SSL nicht mit dem Namen Virtual Host funktioniert, aber wir haben alle unseren Apache-Server auf virtuelle Maschinen mit dedizierten privaten IP-Adressen. Wir haben eine primäre virtuelle Maschine, die Mod_proxy Setup zu leiten den Verkehr auf den entsprechenden vms hat.

Um jedoch zu routen https Verkehr brauchen wir das Zertifikat auf dem Proxy sowie die VMs installiert haben. Wir haben ein Wildcard-Zertifikat, das in allen unseren Wirten verwendet werden kann. Alles scheint richtig zu arbeiten, aber ich erhalte die folgende in den Apache-Logs für die Proxy-:

[warnen] Init: SSL-Server-IP / Port-Konflikt: host1.domain.com:443 (/ etc / apache2 / sites-enabled / host1: 1) gegen host2.domain.com:443 (/ etc / apache2 / sites-enabled / host2: 1)

Es gibt eine dieser Fehlermeldung für jeden Host wir Setup auf dem Proxy haben. Unsere Virtual Host Setup für den Proxy veröffentlicht unter:

<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, dass ich dies nicht erhalten arbeiten?

War es hilfreich?

Lösung

Es klingt wie Apache Sie warnt, dass Sie mehrere <VirtualHost> Abschnitte mit der gleichen IP-Adresse und Port ... so weit wie immer sie haben, ohne Warnungen zu arbeiten, ich denke, Sie so etwas wie Server Name Indication (SNI verwenden, müssten ), ein Weg, um die Hostnamen zu identifizieren angeforderten des SSL-Handshake als Teil. Grundsätzlich können Sie damit tun namensbasierte virtuelle Hosting über SSL, aber ich bin nicht sicher, wie gut es von Browsern unterstützt wird. Anders als so etwas wie SNI, sind Sie grundsätzlich beschränkt auf eine SSL-fähigen Domain-Namen für jede IP-Adresse, die Sie mit dem öffentlichen Internet aus.

Natürlich, wenn Sie die Webseiten richtig zugreifen können, nehmen Sie wahrscheinlich in Ordnung sein, die Warnungen zu ignorieren. Diese besonder diejenigen sind nicht sehr ernst - sie sind in erster Linie ein Hinweis darauf, was zu sehen, wenn Probleme auftreten

Andere Tipps

Soweit ich weiß, unterstützt Apache SNI seit Version 2.2.12 Leider ist die Dokumentation noch nicht, dass die Änderung widerzuspiegeln.

Gehen Sie für http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI bis das ist beendet

Unter Umständen können Sie die ersetzen sind:

VirtualHost ipaddress:443

mit

VirtualHost *:443

Sie müssen wahrscheinlich diese todo auf alle Ihre virt-Hosts.

Es wird wahrscheinlich klar, bis diese Nachricht. Lassen Sie die Direktive Server Sorge über die Nachricht Anfrage-Routing.

Auch hier können Sie nicht in der Lage sein, dies zu tun, wenn Sie mehr IP-Aliase auf die gleiche Maschine.

Die Virtualhost würde wie folgt 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 webmaster@domain_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>

Apache unterstützt SSL nicht auf namensbasierten virtuellen Host, nur auf IP-basierte virtuelle Hosts.

Quelle: Apache 2.2 SSL FAQ Frage Warum ist es nicht möglich, verwenden Namensbasierte Virtual Hosting verschiedene SSL virtuelle Hosts zu identifizieren?

Im Gegensatz zu SSL ermöglicht die TLS-Spezifikation für namensbasierte Hosts (SNI, wie jemand anderes erwähnt), aber Apache noch nicht diese Funktion unterstützen. Es wird vermutlich in einer zukünftigen Version beim Kompilieren gegen OpenSSL 0.9.8.

Auch mod_gnutls behauptet SNI zu unterstützen, aber ich habe nie wirklich es versucht.

Zuerst müssen Sie Namevirtualhost ip: 443 in Sie config-Datei! Sie haben wahrscheinlich einen mit 80 am Ende, aber Sie werden auch eine mit 443 benötigen.

Zweitens müssen Sie ein * .domain Zertifikat (Wildcard) (es ist möglich zu machen)

Drittens können Sie in einer ip nur something.domain Bahnen machen (wegen des Zertifikats)

Sie muss unter Teil in der NameVirtualHost Funktionalität mit bestimmten IP zu ermöglichen.

NameVirtualHost IP_Address:443
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top