Frage _default_ VirtualHost überlappen sich an Port 443, der erste hat Vorrang


Ich habe zwei Ruby on Rails 3 Anwendungen laufen auf dem gleichen Server, (Ubuntu 10.04), beide mit SSL.

Hier ist meine Apache-Konfigurationsdatei:

<VirtualHost *:80>
ServerName example1.com
DocumentRoot /home/me/example1/production/current/public
</VirtualHost>
<VirtualHost *:443>
ServerName example1.com
DocumentRoot /home/me/example1/production/current/public
SSLEngine on
SSLCertificateFile /home/me/example1/production/shared/example1.crt
SSLCertificateKeyFile /home/me/example1/production/shared/example1.key
SSLCertificateChainFile /home/me/example1/production/shared/gd_bundle.crt
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
</VirtualHost>


<VirtualHost *:80>
ServerName example2.com
DocumentRoot /home/me/example2/production/current/public
</VirtualHost>
<VirtualHost *:443>
ServerName example2.com
DocumentRoot /home/me/example2/production/current/public
SSLEngine on
SSLCertificateFile /home/me/example2/production/shared/iwanto.crt
SSLCertificateKeyFile /home/me/example2/production/shared/iwanto.key
SSLCertificateChainFile /home/me/example2/production/shared/gd_bundle.crt
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
</VirtualHost>

Was ist das Problem:

Nach dem Neustart meines Servers gibt es eine Ausgabe wie folgt:

 * Restarting web server apache2                                   
 [Sun Jun 17 17:57:49 2012] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
 ... waiting [Sun Jun 17 17:57:50 2012] [warn] _default_ VirtualHost overlap on port 443, the first has precedence

Beim googeln, warum dieses Problem kommt, habe ich etwas in der Art:

Sie können keine namensbasierten virtuellen Hosts mit SSL verwenden, da der SSL-Handshake (wenn der Browser das Zertifikat des sicheren Webservers akzeptiert) vor der HTTP-Anforderung auftritt, die den entsprechenden virtuellen Host auf der Basis des Namens identifiziert. Wenn Sie vorhaben, namensbasierte virtuelle Hosts zu verwenden, denken Sie daran, dass sie nur mit Ihrem nicht sicheren Webserver funktionieren.

Aber nicht in der Lage, herauszufinden, wie zwei SSL-Anwendungen auf demselben Server ausgeführt werden.

Kann mir jemand helfen?


61
2018-06-17 22:42


Ursprung


Du hast keine _default_ vhosts in der von dir bereitgestellten Konfiguration, also sind sie woanders. Was ist die Ausgabe von? apache2ctl -S? (Ja, es ist möglich, mehrere SSL-Namen-basierte Vhosts auf verschiedenen Zertifikaten auszuführen, vorausgesetzt, Sie müssen keine Client-Browser unterstützen, auf denen Windows XP läuft, oder andere, die TLS SNI nicht unterstützen. Sie müssen Windows unterstützen XP?) - Shane Madden♦


Antworten:


Fast dort!

Fügen Sie dies zu ports.conf oder http.conf hinzu und behalten Sie Ihre obige Konfiguration bei.

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.

    # !important below!
    NameVirtualHost *:443 
    Listen 443
</IfModule>

85
2017-10-01 07:52



Der Kommentar "#! Wichtig!" Muss entfernt oder in eine andere Zeile verschoben werden. Ansonsten vielen Dank für die Interpretation dieser ungenauen Fehlermeldung für mich. - flickerfly
Dies funktioniert nicht mehr in Apache 2.4.7 - malhal
Vielen Dank. Ich fand, dass ich Listen 443 kommentieren musste, weil das auch in meinen individuellen conf.d / website.conf configs verwendet wird - dlink


Es half mir auch, "/ usr / sbin / apachectl-S" auszuführen. Dieser Befehl zeigt zwei "ssl.conf" -Dateien auf demselben Pfad. Verschieben oder löschen Sie die Täterdatei und alles sollte danach funktionieren.


2
2017-08-08 21:10





Sie können dies zu Ihrer Apache-Konfiguration hinzufügen /etc/apache2/ports.conf:

<IfModule mod_ssl.c>                
    Listen 443                      
    <IfModule !mod_authz_core.c>    
        # Apache 2.2                
        NameVirtualHost *:443       
    </IfModule>                     
</IfModule>                         

(Dies funktioniert in beiden: Apache 2.2 und 2.4)


0
2018-05-17 13:21