Como desativar o acesso https a hosts virtuais específicos?

10

Tudo bem, então eu tenho um servidor Apache configurado com as seguintes diretivas:

NameVirtualHost *:80

<VirtualHost *:80>  
ServerName example1.com  
ServerAlias www.example1.com  
DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
ServerName example2.com
ServerAlias *.example2.com
DocumentRoot /var/www/example2
</VirtualHost>

<VirtualHost example1.com:443>
DocumentRoot /var/www/html
ServerName example1.com:443
SSLEngine on
...
</VirtualHosts>

Portanto, example1.com possui suporte SSL e pode ser acessado via http: // example1.com ou https: // example1.com. No entanto, isso tem o efeito colateral não intencional de mostrar https: // example1.com quando visito https: // example2.com no meu navegador. O que eu quero fazer é basicamente desabilitar https: // example2.com de alguma forma ou redirecioná-lo para http: // example2.com para que eu não receba um aviso e o site errado ao visitá-lo.

nearengine
fonte

Respostas:

7

Você não poderá evitar um aviso, a menos que o exemplo1 e o exemplo2 estejam em endereços IP diferentes ou obtenha um certificado SSL cobrindo os dois nomes - uma página de erro ou redirecionamento não poderá ocorrer até que a conexão SSL seja estabelecida.

Dito isto, algo nesse sentido deve funcionar:

NameVirtualHost *:443
<VirtualHost *:443>
  ServerName example1.com
  SSLEngine on
  #...
</VirtualHost>
<VirtualHost *:443>
  ServerName example2.com
  SSLEngine on
  # same certificate config here as on example1, unless you're wanting to use TLS SNI
  # then, let's redirect the user to non-SSL
  Redirect permanent / http://example2.com/
</VirtualHost>
Shane Madden
fonte
Obrigado! Acho que estava faltando a diretiva NameVirtualHost e o Apache achou que estava tentando fazer dois hosts virtuais entrarem em conflito. Curiosamente, o Chrome não está lançando um aviso sobre esse redirecionamento ... Mas não estou preocupado com isso, só não quero que meu site SSL apareça sob outros nomes de domínio.
nearengine
Não é o mesmo que adicionar certificados inválidos ao fallback para não-ssl? Eu acho que você pode anexar _fake diretamente ao nome dos certificados na sua diretiva vhost.
M3nda 01/03
0

eu não acho que você deve colocar: 443 em ServerName example1.com:443

estes devem estar configurados corretamente

<VirtualHost example1.com:443> //change example1.com to ip address is a good habit
DocumentRoot /var/www/html
ServerName example1.com
SSLEngine on
...
</VirtualHosts>
tywtyw2002
fonte
0

Você precisa ter o Server Name Indication (SNI) para fazer isso. Consulte o link: http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI para obter detalhes.

Karthikeyan
fonte
1
Abaixo votou porque você não forneceu uma resposta ou exemplo, apenas um link (o que não é garantido para estar lá permanentemente)
Chris Bloom