Estamos hospedando dois sites em nosso servidor de produção bastante pequeno, mas dedicado. Ambos os sites exigem autenticação SSL.
Portanto, temos virtualhosts configurados para os dois. Ambos referenciam seus próprios arquivos domain.key, domain.crt e domain.intermediate.crt.
Cada arquivo CSR e certificado de cada site foi configurado usando suas próprias informações exclusivas e nada é compartilhado entre eles (exceto o próprio servidor)
No entanto, qual link simbólico do site (configurado em / etc / apache2 / sites-enabled) é referência primeiro, é o site ao qual o certificado é referenciado, mesmo que estejamos visitando o segundo site.
Por exemplo, suponha que nossas empresas sejam a Cadbury e a Nestlé. Configuramos os dois sites com seus próprios certificados, mas criamos o link simbólico da Cadbury na pasta habilitada para site do apache primeiro e depois na Nestlé.
Você pode visitar a Nestlé perfeitamente, mas se você verificar a instalação do certificado, ela faz referência ao certificado da Cadbury.
Estamos hospedando esses sites em um servidor Ubuntu 12.04.3 LTS dedicado. Ambos os certificados são fornecidos pelo Thawte.com.
Me deparei com algumas soluções em potencial, sem nenhum grau de sucesso. Espero que alguém tenha uma solução decente?
obrigado
Edit: A única outra solução que parece ter fornecido sucesso para algumas pessoas está usando o SNI com Apache. No entanto, as configurações aqui não parecem coincidir com a nossa.
fonte
Respostas:
O problema de hospedar vários sites SSL em um único endereço IP é que a troca de certificados SSL ocorre primeiro, antes da instrução GET, que permite ao servidor da Web saber em qual site você está direcionando.
Mesmo que você digite o nome do servidor https://google.com no navegador, o nome é resolvido para o endereço IP e uma sessão SSL é iniciada no endereço IP. O URL específico que estamos segmentando não pode fazer parte de um handshake SSL padrão, caso contrário, isso seria visível para os bisbilhoteiros. Portanto, o servidor da web não pode saber qual certificado usar e, geralmente, usa o primeiro.
O SNI é uma extensão do TLS / SSL que permite que o nome do host seja incluído na negociação da sessão. Atualmente, isso é amplamente suportado em clientes e servidores. Embora isso torne o nome do host visível para os bisbilhoteiros, ele é considerado aceitável porque inclui apenas o nome do host em vez da URL completa (que pode conter informações confidenciais) e você provavelmente fez uma pesquisa DNS não criptografada para o nome do host imediatamente antes de iniciar o Sessão SSL.
No Apache, existem três etapas:
Você receberá uma mensagem nos logs de erro do Apache se não for construído com o suporte SNI:
Se tudo estiver bem, você obterá o seguinte nos logs:
fonte