Dois SSL virtualhosts no mesmo IP com o Apache

2

Eu tenho um servidor apache com um endereço IP. (em um servidor debian).

Eu tenho vários hosts virtuais para http e um virtualhost para https

um vhost, redireciona o tráfego para o https vhost e isso funciona bem, algo assim

<VirtualHost *:80>
ServerName mymainsite.com
ServerAlias www.mymainsite.com
ServerAlias myothersite.org
ServerAlias www.myothersite.org
    RewriteEngine on
    RewriteRule ^(.*)$ https://www.mymainsite.com$1 [L,R=301]
(...)

Eu tenho outro vhost para https, como este

<VirtualHost *:443>
ServerName www.mymainsite.com
(...)

e isso funciona bem, todos os não https são forwared para https, e isso é super .. mas então o problema.

algumas vezes, as pessoas acessam este link de URL

e isso é respondido pelo https vhost e cria um erro "certificado errado".

A pergunta é: existe uma maneira de evitar isso, sem usar um segundo endereço IP ou comprar um certificado SSL com vários URLs ou curingas?

edit: apenas remova algum texto extra

    
por Sverre 17.11.2014 / 10:52

1 resposta

2

Você precisa usar a extensão SSL chamada Indicação do nome do servidor (SNI). Essa extensão permitirá que o servidor determine para qual solicitação de host virtual nomeada foi designada e corrigirá adequadamente.

Seu apache provavelmente foi construído com suporte a SNI, mas para isso basta configurar dois hosts virtuais de nome em seu IP, porta 443 e tentar iniciar o apache. Se o seu apache não suportar SNI error_log mostrará "Você não deve usar hosts virtuais baseados em nome em conjunto com SSL !!" Se o SNI estiver integrado, o log de erros mostrará "[avisar] Init: os hosts virtuais SSL baseados em nome só funcionam para clientes com suporte a indicação de nome de servidor TLS (RFC 4366)".

Esteja ciente também de que os navegadores também precisam suportar o SNI para que isso funcione. Ainda bem que todos os principais navegadores suportam

  • Mozilla Firefox 2.0 ou posterior
  • Opera 8.0 ou posterior (com o TLS 1.1 ativado)
  • Internet Explorer 7.0 ou posterior (no Vista, não no XP)
  • Google Chrome
  • Safari 3.2.1 no Mac OS X 10.5.6

Portanto, em resumo, você pode ter 2 ou mais domínios diferentes com seus respectivos certificados SSL no mesmo IP, basta configurar outros domínios SSL de maneira muito parecida com o seu primeiro. Se o seu apache não tem suporte para o SNI, você precisará encontrar outro pacote apache ou reconstruir este com suporte para o SNI para que ele funcione.

    
por 17.11.2014 / 11:40