69 votes

_par défaut_ VirtualHost se chevauchent sur le port 443, le premier a la priorité

J'ai deux applications ruby on Rails 3 fonctionnant sur le même serveur, (ubuntu 10.04), les 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, j'obtiens un résultat comme celui-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

En cherchant sur Google pourquoi ce problème se pose, j'ai obtenu quelque chose comme ceci :

Vous ne pouvez pas utiliser les hôtes virtuels basés sur le nom avec SSL car la poignée de main SSL (lorsque le navigateur accepte le certificat du serveur Web sécurisé) se produit avant la requête HTTP, qui identifie l'hôte virtuel basé sur le nom approprié. Si vous envisagez 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 je n'arrive pas à comprendre comment exécuter deux applications ssl sur le même serveur.

Quelqu'un peut-il m'aider ?

92voto

Cray Points 943

On y est presque !

Ajoutez ceci à ports.conf ou http.conf et gardez 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>

4voto

Dendronotus Points 1

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

1voto

rubo77 Points 2294

Vous pouvez ajouter ceci à votre configuration apache à l'adresse suivante /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 versions : apache 2.2 et 2.4)

0voto

Dimitrios Points 119

Trouvez simplement où se trouve le "Listen 443" et collez-le au-dessus de NameVirtualHost *:443. Dans mon cas, c'était dans le fichier ssl.conf

Si vous redémarrez le serveur http et que vous obtenez le message "Listen 443 is deprecated", supprimez "Listen 443" et ne laissez que NameVirtualHost *:443.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X