Site SSL não usando o IP correto no Apache e Ubuntu

10

Estou tentando configurar um servidor web apache-ubuntu-php. Meu servidor da web hospedará vários sites SSL, cada site SSL terá seu próprio endereço IP (a menos que haja uma maneira melhor de fazer isso).

Então, suponho que o primeiro passo seja fazer com que o apache reconheça pelo menos dois endereços IP diferentes. No momento, tenho uma versão SSL e não SSL de um site http://mysite.com e https://mysite.com . Embora ambos estejam atualmente em execução no meu servidor, não consigo que ambos usem endereços IP diferentes. No momento, ambos estão usando o IP 1.1.1.1. Comprei um segundo endereço IP 2.2.2.2, mas o https://mysite.com não o aceita e o firefox reclama do erro "ssl_error_rx_record_too_long". Aqui está uma olhada nos meus 2 arquivos 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>

Em mysite.com, se eu substituir <VirtualHost *: 443> por <VirtualHost 2.2.2.2:443>, o Firefox apresentará o erro "ssl_error_rx_record_too_long".

Portanto, quando tento criar e ativar um /etc/apache2/site-enabled/mysite2.com com outro certificado SSL em um terceiro endereço IP, o Apache reclama de um problema de "sobreposição".

Alguém pode me dizer como acessar meu servidor para que eu possa hospedar vários sites SSL em domínios diferentes? Quero que o certificado SSL funcione para o IE 7+, FF e Safari no sistema operacional popular, como WinXP, Vista, Win7 e OSX.

John
fonte

Respostas:

7

Eu configurei isso nos meus servidores ajustando o arquivo /etc/apache2/ports.conf da seguinte maneira:

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

Você poderá usar editando o /etc/apache2/sites-enabled/mysite.com (algum código foi omitido para diminuir o exemplo):

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

Para quantos fantasmas você quiser.

Edit: PRECISA DE UMA SEGUNDA OPINIÃO? VÁ AQUI: http://forum.slicehost.com/comments.php?DiscussionID=3244

Patrick R
fonte
ah, funcionou ... e cada um dos sites está usando o mesmo endereço IP 1.1.1.1. Então, isso significa que não preciso mais do endereço IP 2.2.2.2? Não preciso de um IP exclusivo para cada domínio SSL?
John
Você não precisa usar um IP exclusivo para cada domínio SSL.
Patrick R
Explique por que você não precisa de um IP separado para cada domínio. Isso vai contra tudo o que eu entendo sobre SSL ...
Josh
Não tenho certeza do que dizer, exceto que usei vários caracteres curinga em servidores com um IP. Contanto que o CommonName corresponda ao ServerName, você estará bem. Agora, se você estiver em um ambiente de hospedagem compartilhada, isso poderá permitir que outras pessoas usem seu certificado. Se funcionou para johnlai2004 e eu ... então, qual é o problema?
Patrick R
voretaq7 explicou o raciocínio em serverfault.com/questions/109800/… - Este é TSL, não SSL. O SSL requer um relacionamento 1: 1 entre endereços IP e certificados. TLS não. Eu simplesmente não estava TLS conscientes poderia ser usado para HTTPS (ainda)
Josh
0

Não posso verificar no momento, então isso é apenas um palpite: os arquivos geralmente são lidos em ordem alfabética. Você pode ter mais sorte ao lê-los na ordem inversa, por exemplo, renomeie 000-default para 500-default e use 400-myhost. Não me lembro onde o apache gosta de ter o host padrão - primeiro ou último. Mas pelo que você diz (sobreposição), pode ser a última

Olaf
fonte
Você pode ver o que ele usará com apachectl -t -D DUMP_VHOSTS. A ordem é a penúltima.
Richard Sais