Apache 2 - Vários sites SSL com vários hosts virtuais

2

Eu tenho cerca de 10 sites no Apache 2. São todos sites separados - não subdomínios. Tenho SSL certs para dois deles e gostaria de configurar o SSL para ambos e não forçar meus sites não-ssl a usarem o CERT.

O problema que estou enfrentando é que eu não sou capaz de ter os dois certificados ativos, sempre parece padrão para o primeiro, independentemente de qual site eu vou.

Eu tenho lido sobre isso, e parece que, embora o meu servidor possa suportar SSI, o Windows XP não suporta isso, então essa não será uma opção viável. Além disso, eu olhei brevemente para mod_gnutils, mas não posso garantir que isso irá fazer o que eu quero, e eu também não estou realmente confortável em fazer toda a instalação / configuração necessária para fazer esse trabalho se eu não for absolutamente necessário.

Qualquer direção que me seja dada sobre isso seria muito apreciada!

aqui estão os dois 443 hosts virtuais. Eu tentei referenciar os hosts virtuais como você vê abaixo, bem como outras variações, como simplesmente '' e ''. Eu também joguei com as referências NameVirtualHost, mas ainda sem sucesso.

Listen 443
NameVirtualHost www.site1.com:443
NameVirtualHost www.site2.com:443

<VirtualHost www.site1.com:443>
 DocumentRoot /var/www/site1/
 ServerName  www.site1.com:443

 #SSL 
 SSLEngine on
 SSLCertificateFile /path/to/ssl/site1.com.crt
 SSLCertificateKeyFile /path/to/ssl/site1.key
 SSLCertificateChainFile /path/to/ssl/bundle1.crt 

</VirtualHost>

<VirtualHost www.site2.com:443>
 DocumentRoot /var/www/site2/
 ServerName  www.site2.com:443

 #SSL 
 SSLEngine on
 SSLCertificateFile /path/to/ssl/site2.com.crt
 SSLCertificateKeyFile /path/to/ssl/sit2.key
 SSLCertificateChainFile /path/to/ssl/bundle2.crt  

</VirtualHost>
    
por jacosta 26.10.2011 / 20:34

2 respostas

2

A resposta curta é que você precisa obter endereços IP adicionais ou obter um certificado que tenha vários nomes no certificado (SAN ou curinga).

O SNI realmente não é viável se você tiver um site que queira veicular na Internet. Simplesmente não há navegadores suficientes que o suportem ainda.

    
por 26.10.2011 / 20:38
1

Sem o uso de SNI, você não pode ter vários certificados SSL associados a uma única combinação de endereço IP / porta.

A única solução para você é usar

  • vários endereços IP, cada um ouvindo na porta 443. Vários IPs podem significar aumento de custo, dependendo de com quem você está hospedando ou
  • 1 endereço IP, cada um com uma porta diferente. O lado negativo disso é que seus clientes precisarão especificar a porta na URL, o que é um pouco ruim.

Uma solicitação HTTP normal é iniciada assim:

  1. O navegador resolve o nome (www.example.com) para IP (10.0.0.1)
  2. O navegador estabelece uma conexão TCP para 10.0.0.1, porta 80
  3. O navegador envia uma solicitação HTTP, parte da qual inclui o cabeçalho "Host:", que será "www.example.com", neste caso.
  4. O Apache usa o cabeçalho do host e faz a correspondência com um host virtual baseado em nome e exibe o que estiver lá.

Por outro lado, uma solicitação HTTPS (ou seja, HTTP sobre SSL) é iniciada assim:

  1. O navegador resolve o nome (www.example.com) para IP (10.0.0.1)
  2. O navegador estabelece uma conexão TCP para 10.0.0.1, porta 443
  3. O navegador negocia a criptografia SSL com o servidor. O nome do site (www.example.com) é especificado no certificado, portanto, nesse estágio, ele precisa corresponder ao SSL ou, caso contrário, o navegador emitirá um aviso de que algo está errado com a conexão SSL.
  4. O navegador envia solicitação HTTP, etc.

O motivo pelo qual você não pode ter certificados diferentes associados a 10.0.0.1:443 é porque o Apache não teria como saber qual usar para qualquer conexão recebida.

    
por 26.10.2011 / 20:56