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 john@mysite.com
     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 john@mysite.com
     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.

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


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


Você pode ver o que ele usará com apachectl -t -D DUMP_VHOSTS. A ordem é a penúltima.
— Richard Sais
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.