web-dev-qa-db-fra.com

_default_ VirtualHost se chevauchent sur le port 443, le premier a la priorité

J'ai deux Ruby on Rails 3 applications fonctionnant sur le même serveur, (ubuntu 10.04), toutes deux avec SSL.

Voici mon fichier de configuration Apache:

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

Quel est le problème:

Au redémarrage de mon serveur, cela me donne une sortie comme celle-ci:

 * 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

Sur googler pourquoi ce problème vient, j'ai quelque chose comme ça:

Vous ne pouvez pas utiliser d'hôtes virtuels basés sur le nom avec SSL car la négociation SSL (lorsque le navigateur accepte le certificat du serveur Web sécurisé) se produit avant la demande HTTP, qui identifie l'hôte virtuel basé sur le nom approprié. Si vous prévoyez d'utiliser des hôtes virtuels basés sur le nom, n'oubliez pas qu'ils ne fonctionnent qu'avec votre serveur Web non sécurisé.

Mais pas en mesure de comprendre comment exécuter deux applications SSL sur le même serveur.

Quelqu'un peut-il m'aider?

65
Mohit Jain

Presque là!

Ajoutez ceci à ports.conf ou http.conf et conservez votre configuration ci-dessus.

<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>
88

Cela m'a également aidé à exécuter "/ usr/sbin/apachectl -S". Cette sortie de commande affiche DEUX fichiers "ssl.conf" sur le même chemin. Déplacez ou supprimez le fichier du délinquant et tout devrait fonctionner après.

3
Robert

Vous pouvez l'ajouter à votre configuration Apache à /etc/Apache2/ports.conf:

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

(Cela fonctionne dans les deux: Apache 2.2 et 2.4)

1
rubo77