_default_ VirtualHost se sobrepõe à porta 443, a primeira tem precedência

64

Eu tenho dois aplicativos ruby ​​on rails 3 rodando no mesmo servidor (ubuntu 10.04), ambos com SSL.

Aqui está o meu arquivo de configuração do 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>

Qual é o problema:

Ao reiniciar o servidor, ele fornece uma saída como esta:

 * 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

No Google, por que esse problema está chegando, eu tenho algo assim:

Você não pode usar hosts virtuais baseados em nome com SSL porque o handshake SSL (quando o navegador aceita o certificado do servidor da Web seguro) ocorre antes da solicitação HTTP, que identifica o host virtual baseado em nome apropriado. Se você planeja usar hosts virtuais baseados em nome, lembre-se de que eles funcionam apenas com o servidor da Web não seguro.

Mas não é possível descobrir como executar dois aplicativos ssl no mesmo servidor.

Alguém pode me ajudar?

Mohit Jain
fonte
5
Você não tem nenhum _default_fantasma na configuração que forneceu, então eles estão em outro lugar. Qual é o resultado de apache2ctl -S? (Sim, é possível executar vários vhosts baseados em nomes SSL em certificados diferentes, desde que você não precise suportar navegadores clientes executando o Windows XP ou outros que não suportam o TLS SNI. Você precisa suportar o Windows XP?)
Shane Madden

Respostas:

87

Quase lá!

Adicione isso ao ports.conf ou http.conf e mantenha sua configuração acima.

<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>
Daniel T. Magnusson
fonte
! O comentário "# importante precisa ser removido ou movido para outra linha Caso contrário, muito obrigado para interpretar esta mensagem de erro imprecisas para mim..
flickerfly
3
Isso não funciona mais no Apache 2.4.7
malhal 3/14/14
Obrigado. Eu achei que eu precisava para comentar Listen 443 porque isso também está sendo usado em meus conf.d configurações individuais / website.conf
dlink
3

Também me ajudou a executar "/ usr / sbin / apachectl -S". Esta saída de comando mostra DOIS arquivos "ssl.conf" no mesmo caminho. Mova ou exclua o arquivo ofensor e tudo funcionará depois.

Robert
fonte
1

Você pode adicionar isso à sua configuração do apache em /etc/apache2/ports.conf:

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

(Isso funciona em ambos: apache 2.2 e 2.4)

rubo77
fonte