Rejeitar conexões HTTPS com outros nomes de host

1

Eu tenho um certificado SSL instalado e funcionando para o meu site, no entanto, cinco domínios diferentes apontam para o mesmo host e, se um usuário é direcionado para https://(the other four) , ele fica com uma tela vermelha grande e irritada.

Se eu tiver apenas um VirtualHost que parece ser o pega-tudo, que é o que eu não quero. Eu tentei criar outro VirtualHost para capturar os domínios não certificados:

NameVirtualHost *:443

<VirtualHost *:443>
    ServerName example2.com
    ServerAlias example3.com
    DocumentRoot /srv/deadwww/  # contains nothing of consequence
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com
    SSLEngine on
    SSLCertificateFile /path/to/certs/example.com.crt
    ...

mas o Apache nem inicia, latindo:

[error] Server should be SSL-aware but has no certificate configured

Então, se eu tiver apenas uma entrada do VirtualHost, isso captura todos os nomes e falha na autenticação da maioria, e se eu tentar pegar os nomes ruins antes de chegar lá ... não posso porque o Apache não me deixa. Como resolvo esse problema?

    
por Nick T 16.11.2013 / 01:29

5 respostas

3

Você não pode fazer nada para corrigir isso sem uma das três coisas:

  • Mais endereços IP - movendo o domínio com SSL para um endereço diferente do que os não-SSL.
  • Mais certificados (e o uso de SNI ) - um certificado configurado para cada domínio que o Apache servir com base no nome do host enviado pelo cliente no handshake TLS. Observe que o IE e o Chrome no XP ainda receberão os avisos de certificados!
  • Certificados diferentes - um certificado curinga ou de nome alternativo que abrange todos os nomes de domínio em questão.

Nada que você possa fazer na configuração do Apache sem uma dessas três alterações corrigirá isso, pois qualquer tipo de redirecionamento ou bloqueio da solicitação ocorrerá após a conclusão do handshake SSL (o usuário deve clicar no aviso de certificado antes de serem redirecionados).

    
por 16.11.2013 / 02:26
0

Você não pode hospedar vários sites SSL dessa maneira; cada um deles precisa do seu próprio endereço IP OU você precisa de um certificado seguro de caractere curinga: link

    
por 16.11.2013 / 01:35
0

Se você tem 5 nomes de domínios de nível superior ou menos, você pode obter um certificado "multi-host", que seria mais barato do que 5 IP's mais 5 certificados individuais. com multi-host, você não precisa de novos ips, ou tem que fazer alterações no DNS (ou seja, 5 fqdn diferentes no mesmo IP).

    
por 16.11.2013 / 01:39
0

E se você colocar uma regra de negação para qualquer domínio, exceto para aqueles que você adicionou explicitamente ao parâmetro ServerName. Para parar o apache de reclamar, você pode adicionar certs SSL falsos lá. Eu não tentei, mas você pode querer dar uma chance. Certifique-se de colocar a seção virtualhost para o domínio / site principal que você está hospedando acima da linha abaixo -

<VirtualHost *:443>
  ServerName example2.com
  ServerAlias *.example.com
  DocumentRoot /var/www/example2
  ##put the SSL lines here
  <Directory /var/www/example2>
   Order allow,deny
   Order Deny,Allow
   Deny from all
   Allow from 127.0.0.1
   </Directory>
</VirtualHost>
    
por 16.11.2013 / 01:50
0

Não está claro sobre o objetivo da sua configuração, mas parece que apenas um (1) dos seus cinco (5) domínios deve ter HTTPS pela porta 443, correto? Então seria possível forçar as solicitações dos outros quatro (4) para o site principal HTTPS habilitado?

Crie uma configuração do VirtualHost para os outros quatro (4) assim:

<VirtualHost *:443>
  ServerName example1.com
  ServerAlias example2.com
  ServerAlias example3.com
  ServerAlias example4.com

  RewriteEngine on
  RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

  ### NOTE: Might have to put dummy SSL info here.

</VirtualHost>

O ServerName e ServerAlias devem capturar todas as solicitações incorretas na porta 443 para example1.com , example2.com , example3.com e example4.com redirecionando todos para example.com . Note que você pode ter que incluir informações SSL fictícias, mas o redirecionamento deve funcionar.

    
por 16.11.2013 / 01:54