_default_ VirtualHost-Überlappung auf Port 443, der erste hat Vorrang

64

Ich habe zwei Ruby on Rails 3-Anwendungen auf demselben 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:

Beim Neustart meines Servers erhalte ich folgende Ausgabe:

 * 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

Als ich gegoogelt habe, warum dieses Problem auftritt, habe ich Folgendes erhalten:

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 erfolgt, die den entsprechenden namensbasierten virtuellen Host identifiziert. Wenn Sie namenbasierte virtuelle Hosts verwenden möchten, beachten Sie, dass diese nur mit Ihrem nicht sicheren Webserver funktionieren.

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

Kann mir jemand helfen?

Mohit Jain
quelle
5
Sie haben keine _default_vhosts in der von Ihnen bereitgestellten Konfiguration, also sind sie woanders. Was ist die Ausgabe von apache2ctl -S? (Ja, es ist möglich, mehrere namenbasierte SSL-vhosts auf verschiedenen Zertifikaten auszuführen, vorausgesetzt, Sie müssen keine Clientbrowser mit Windows XP oder andere unterstützen, die TLS-SNI nicht unterstützen. Müssen Sie Windows unterstützen XP?)
Shane Madden

Antworten:

87

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>
Daniel T. Magnusson
quelle
Der Kommentar "#! Wichtig!
Muss
3
Dies funktioniert nicht mehr in Apache 2.4.7
malhal
Danke. Ich stellte fest, dass ich Listen 443 auskommentieren musste, da dies auch in meiner individuellen conf.d / website.conf-Konfiguration verwendet wird
dlink
3

Es hat mir auch geholfen, "/ usr / sbin / apachectl -S" auszuführen. Dieser Befehlsexit zeigt ZWEI "ssl.conf" -Dateien im selben Pfad an. Verschieben oder löschen Sie die Täterdatei und alles sollte danach funktionieren.

Robert
quelle
1

Sie können dies zu Ihrer Apache-Konfiguration hinzufügen unter /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 Versionen: Apache 2.2 und 2.4)

rubo77
quelle