Site SSL n'utilisant pas l'IP correcte dans Apache et Ubuntu

10

J'essaie de configurer un serveur Web apache-ubuntu-php. Mon serveur Web hébergera plusieurs sites SSL, chaque site SSL aura sa propre adresse IP (à moins qu'il n'y ait une meilleure façon de le faire).

Je suppose donc que la première étape consiste à obtenir apache pour reconnaître au moins deux adresses IP différentes. À l'heure actuelle, j'ai une version SSL et non SSL d'un site Web qui est http://mysite.com et https://mysite.com . Bien que les deux s'exécutent actuellement sur mon serveur, je ne peux pas obtenir que les deux utilisent des adresses IP différentes. À l'heure actuelle, les deux utilisent l'IP 1.1.1.1. J'ai acheté une deuxième adresse IP 2.2.2.2 mais le https://mysite.com ne l'acceptera pas et firefox se plaint de l'erreur "ssl_error_rx_record_too_long". Voici un aperçu de mes 2 fichiers vhost

/ etc / apache2 / site-enabled / 000-default

#NameVirtualHost 1.1.1.1:80

#<VirtualHost 1.1.1.1:80>
<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

/etc/apache2/site-enabled/mysite.com

<VirtualHost 1.1.1.1:80>
     ServerAdmin [email protected]
     ServerName mysite.com
     ServerAlias www.mysite.com
     DocumentRoot /srv/www/mysite.com/public_html/
     ErrorLog /srv/www/mysite.com/logs/error.log
     CustomLog /srv/www/mysite.com/logs/access.log combined
</VirtualHost>
<IfModule mod_ssl.c>
#<VirtualHost 2.2.2.2:443>
<VirtualHost *:443>
     ServerAdmin [email protected]
     ServerName mysite.com
     ServerAlias www.mysite.com
     DocumentRoot /srv/www/mysite.com/public_html/
     ErrorLog /srv/www/mysite.com/logs/error.log
     CustomLog /srv/www/mysite.com/logs/access.log combined

        SSLEngine on

        SSLCertificateFile    /etc/ssl/localcerts/www.mysite.com.crt
        SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite.com.pem

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

        BrowserMatch ".*MSIE.*" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0

</VirtualHost>
</IfModule>

Sur mysite.com, si je remplace <VirtualHost *: 443> par <VirtualHost 2.2.2.2:443>, Firefox se plaint de l'erreur "ssl_error_rx_record_too_long".

Ainsi, lorsque j'essaie de créer et d'activer un /etc/apache2/site-enabled/mysite2.com avec un autre certificat SSL sur une troisième adresse IP, Apache se plaint d'un problème de "chevauchement".

Quelqu'un peut-il me dire comment installer mon serveur afin de pouvoir héberger plusieurs sites Web SSL sur différents domaines? Je souhaite que le certificat SSL fonctionne pour IE 7+, FF et Safari sur les systèmes d'exploitation populaires tels que WinXP, Vista, Win7 et OSX.

John
la source

Réponses:

7

J'ai réglé cela sur mes serveurs en ajustant le fichier /etc/apache2/ports.conf comme suit:

<IfModule mod_ssl.c>
NameVirtualHost *:443
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    NameVirtualHost *:443
    Listen 443
</IfModule>

Vous devriez alors pouvoir utiliser en éditant /etc/apache2/sites-enabled/mysite.com (un code omis pour raccourcir l'exemple):

<VirtualHost *:443>
     ServerName mysite1.com
     SSLCertificateFile    /etc/ssl/localcerts/www.mysite1.com.crt
     SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite1.com.pem
</VirtualHost>

<VirtualHost *:443>
    ServerName mysite2.com
    SSLCertificateFile    /etc/ssl/localcerts/www.mysite2.com.crt
    SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite2.com.pem
</VirtualHost>

Pour autant de vhosts que vous le souhaitez.

Edit: BESOIN D'UN DEUXIÈME AVIS? ALLEZ ICI: http://forum.slicehost.com/comments.php?DiscussionID=3244

Patrick R
la source
oh, cela a fonctionné ... et chacun des sites Web utilise la même adresse IP 1.1.1.1. Cela signifie-t-il que je n'ai plus besoin de l'adresse IP 2.2.2.2? Je n'ai pas besoin d'une IP unique pour chaque domaine SSL?
John
Vous n'êtes pas obligé d'utiliser une adresse IP unique pour chaque domaine SSL.
Patrick R
Veuillez expliquer pourquoi vous n'avez pas besoin d'une adresse IP distincte pour chaque domaine. Cela va à l'encontre de tout ce que je comprends de SSL ...
Josh
Je ne sais pas quoi dire à part que j'ai utilisé plusieurs certificats génériques sur des serveurs avec une IP. Tant que le CommonName correspond au ServerName, tout ira bien. Maintenant, si vous êtes dans un environnement d'hébergement partagé, cela peut permettre à d'autres d'utiliser votre certificat. Si cela a fonctionné pour johnlai2004 et moi ... eh bien, quel est le problème?
Patrick R
voretaq7 a expliqué le raisonnement sur serverfault.com/questions/109800/… - C'est TSL, pas SSL. SSL nécessite une relation 1: 1 entre les adresses IP et les certificats. TLS ne le fait pas. Je ne savais tout simplement pas que TLS pouvait être utilisé pour HTTPS (encore)
Josh
0

Je ne peux pas vérifier actuellement, c'est donc une supposition folle: les fichiers sont généralement lus par ordre alphabétique. Vous pourriez avoir plus de chance lorsque vous les aurez lus dans l'ordre inverse, par exemple renommer 000-default en 500-default et utiliser 400-myhost. Je ne me souviens pas où apache aime avoir l'hôte par défaut - premier ou dernier. Mais d'après ce que vous dites (chevauchement), ce pourrait être la dernière

Olaf
la source
Vous pouvez voir ce qu'il utilisera avec apachectl -t -D DUMP_VHOSTS. L'ordre est le premier à durer.
Richard Salts