Vários sites em um servidor / IP; apenas um com SSL

2

Recentemente, adquiri um certificado SSL para meu site principal ( link ). Funciona muito bem e até configurei uma regra de .htaccess para que todo o tráfego nesse site seja criptografado. (Estou executando o Apache.)

No entanto, também tenho outros sites nesse mesmo servidor, com o mesmo endereço IP. Por exemplo, eu tenho um blog ( link ). Ele funciona muito bem, desde que eu me conecte à versão não criptografada. Não desejo ativar a criptografia para este site, pois sei que meu certificado existente não inclui esse subdomínio e não quero pagar pelo endereço IP adicional para fazer isso. Então tudo fica bem se o usuário digitar http: // mas se o usuário digitar https: // (por qualquer motivo), um aviso aparece dizendo que o site é um impostor (como esperado, porque o certificado está errado). Mas, se o usuário clicar para continuar, ele será direcionado ao site principal, em vez do blog no subdomínio. Esta é uma circunstância que raramente será encontrada na prática, mas eu sinto que o comportamento correto é dar um aviso e, em seguida, prosseguir para o site "impostor" correto. Ou provavelmente seria bom para mim se ele falhou completamente.

Eu entendo alguns dos problemas em jogo. Primeiro, eu entendo que o material SSL acontece antes que o Apache receba a solicitação, e é por isso que geralmente não é possível ter várias certs no mesmo endereço IP. Também parece estar me impedindo de usar apenas uma regra .htaccess para encaminhar todo mundo para a http: // versão do site (o oposto do que eu faço no site principal).

Portanto, a maneira que entendo o que está acontecendo é a seguinte: O SSL lida com a solicitação de certificado retornando o certificado errado para o navegador. O navegador hesita, mas nos permite prosseguir. Então o Apache não sabe qual URL foi solicitado, mas sabe que ele estava na porta 443, então ele retorna o site principal. O navegador acha que obteve o blog do subdomínio, portanto, ele exibe essa URL.

Meus vhosts atuais para o site principal são assim:

<VirtualHost *:80>
  ServerAdmin [email protected]
  ServerName  www.wemarsh.com
  ServerAlias wemarsh.com

  DirectoryIndex index.html
  DocumentRoot redacted
</VirtualHost>

<VirtualHost *:443>
  ServerAdmin [email protected]
  ServerName  www.wemarsh.com
  ServerAlias wemarsh.com

  SSLEngine on
  SSLCertificateFile redacted
  SSLCertificateKeyFile redacted
  SSLCertificateChainFile redacted
  SSLCACertificateFile redacted

  DirectoryIndex index.html
  DocumentRoot redacted
</VirtualHost>

Meu vhost atual para o blog do subdomínio é assim:

<VirtualHost *:80>
  ServerAdmin [email protected]
  ServerName  gallivant.wemarsh.com

  DirectoryIndex index.php
  DocumentRoot redacted
</VirtualHost>

Eu também tentei definir a porta 443 nos vhosts para o subdomínio, mas isso não funcionou.

É possível fazer o que estou tentando fazer? Alguém tem uma solução? Em algum momento futuro, a situação se tornará mais complexa quando eu adicionar um endereço IP adicional e outro certificado ao servidor, por isso, lembre-se disso ao fazer sugestões.

Suponho que os provedores de hospedagem compartilhada devam estar fazendo isso de alguma forma, caso contrário, todos os sites que não são https quebrariam, certo?

(Nota: eu intencionalmente não vinculei a versão https do vagabundo. A última coisa que eu preciso é que o Google direcione as pessoas para esse bug, então, por favor, evite associar isso às suas respostas.)

Obrigado antecipadamente!

    
por Eric Marsh 19.10.2013 / 12:36

1 resposta

0

Você não pode contornar o aviso que o usuário recebe desde que você está certo - não pode ser determinado qual é o nome do domínio até que seja tarde demais. Funciona apenas com TLS (o TLS é suportado em navegadores modernos, mas não em navegadores mais modernos, e a maioria dos rastreadores automatizados e scripts de API também não conhecem o TLS).

Somente correções que você pode fazer é depois que o usuário passar a página de aviso - verifique se o nome do host está correto e, se não estiver, redirecione para o domínio não-ssl (ou ssl) correto.

A melhor solução seria, obviamente, obter ip separado para SSL, para que ele não colidisse com outros domínios, mas, como você observou, não deseja fazer isso.

    
por 19.10.2013 / 12:52