web-dev-qa-db-de.com

Apache-Name Virtueller Host mit SSL

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?

36
JamesArmes

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

21
David Z

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

7
user273370

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.

3
Harold

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>
2
ELinuxbook

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)

1
DataCZ

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.

1
Powerlord

Sie MÜSSEN einen Unterteil hinzufügen, um die NameVirtualHost-Funktionalität mit der angegebenen IP zu aktivieren.

NameVirtualHost IP_Address:443
0
Yasiru G