Como evitar que https: // seja acessível de domínios sem um certificado?

2

Eu tenho esta configuração

Server version: Apache/2.2.22 (Ubuntu)
OpenSSL 1.0.1c 10 May 2012

Um IP com vários domínios conectados a ele. Para example1.com , tenho um certificado SSL assinado e, portanto, example1.com está acessível via https://secure.example1.com

Isso também vale para example2.com (assinado com um certificado válido e acessível via https://secure.example2.com )

No entanto, example3.com NÃO possui nenhum certificado SSL vinculado a ele e não deve estar acessível via https (porta SSL 443). Mas, quando um usuário acessa https://example3.com , um aviso é exibido. No Google Chrome, é assim

You attempted to reach example3.com, but instead you actually reached a server identifying itself as secure.example1.com. This may be caused by a misconfiguration on the server or by something more serious. An attacker on your network could be trying to get you to visit a fake (and potentially harmful) version of example3.com

Se você desconsiderar o aviso, o usuário realmente verá o conteúdo de secure.example1.com

A configuração do VirtualHost é semelhante a esta

<VirtualHost *:443>
        ServerName secure.example1.com
        DocumentRoot /var/www/blahblah
        SSLEngine on
        SSLCertificateFile /blahblah.crt
        SSLCertificateKeyFile /blahblah.key
        SSLCertificateChainFile /blahblah.pem
</VirtualHost>

<VirtualHost *:443>
        ServerName secure.example2.com
        DocumentRoot /var/www/blahblah
        SSLEngine on
        SSLCertificateFile /blahblah.crt
        SSLCertificateKeyFile /blahblah.key
        SSLCertificateChainFile /blahblah.pem
</VirtualHost>

<VirtualHost *:80>
        ServerName example3.com
        DocumentRoot /var/www/blahblah
</VirtualHost>

Como posso evitar esse comportamento?

    
por subZero 06.06.2014 / 14:24

2 respostas

6

Os domínios não SSL não devem usar esse IP. Mesmo para vários domínios compatíveis com SSL, você depende de clientes para implementar o SNI sem problemas, o que pode ou não ser uma suposição segura.

O problema é que, antes que o Apache possa redirecionar o navegador para HTTP, um handshake SSL deve ser bem-sucedido, portanto, se você não puder fornecer um certificado válido para o domínio, os clientes sempre solicitarão erros SSL.

Editar : vários domínios SSL funcionarão sem problemas se você usar apenas um certificado com SANs apropriadas (certificado de vários domínios). O problema com domínios não SSL permanece, no entanto.

    
por 06.06.2014 / 14:42
2

Como Koen van der Rijt já escreveu, você deve verificar SF para perguntas similares e ler as respostas cuidadosamente.

  apache2ctl -S 

dá a ordem de vhost "execução"

para que o seu exemplo1.com seja a primeira porta: 443 domínio definido, então este será usado.

Em vez disso, você pode fazer um f.e. certificado auto-assinado e informe ao usuário que esse domínio não tem uma conexão https no momento ou faça um rewrite_rule que redirecione o tráfego do link para link . Observe que isso precisaria de um certificado "inválido" e informará o usuário.

Se você não usa o SNI, precisa adicionalmente de pelo menos 1 IP por Cert.

    
por 06.06.2014 / 14:41