Apache SSL VirtualHosts em um único IP usando o certificado UCC / SAN

11

Eu preciso hospedar vários hosts virtuais Apache com SSL de um único IP.

Agora - Eu entendo que, como o SSL envolve a solicitação HTTP, não há como saber qual host está sendo solicitado até que uma chave pública seja enviada primeiro ao cliente. Isso essencialmente quebra a possibilidade de hosts virtuais SSL usando um certificado SSL padrão.

Eu obtive um Certificado de Comunicações Unificadas (UCC), também conhecido como certificado de Nome Alternativo de Assunto (SAN). Isso permite que eu sirva o mesmo certificado para vários domínios.

Eu gostaria que este fosse o certificado enviado pelo Apache para qualquer solicitação SSL - e então o Apache resolveria o host virtual como de costume, assim que a criptografia fosse estabelecida.

Como devo configurar o Apache para isso? Eu tentei pesquisar como isso pode ser feito, mas tudo o que posso encontrar são citações que dizem que é possível, mas sem detalhes:

wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

While Apache can renegotiate the SSL connection later after seeing the hostname in the request (and does), that's too late to pick the right server certificate to use to match the request hostname during the initial handshake, resulting in browser warnings/errors about certificates having the wrong hostname in them.

serverfault.com/questions/48334/apache-virtual-hosts-with-ssl

Incidentally, it is possible to have multiple SSL-secured named virtual hosts on a single IP address - I do it on my website - but it produces all sorts of warnings in the Apache logs, and certificate warnings in the browser. I certainly wouldn't recommend it for a production site that needs to look clean. -David Jul 31 at 4:58

www.digicert.com/subject-alternative-name.htm

Virtual Host Multiple SSL sites on a single IP address. Hosting multiple SSL-enabled sites on a single server typically requires a unique IP address per site, but a certificate with Subject Alternative Names can solve this problem. Microsoft IIS 6 and Apache are both able to Virtual Host HTTPS sites using Unified Communications SSL, also known as SAN certificates.

Por favor ajude.

    
por Mikuso 15.02.2010 / 19:13

1 resposta

13

Eu testei isso na minha instância do apache 2.2.14 e funcionou bem:

Use a diretiva NameVirtualHost (para ports.conf):

NameVirtualHost *:443

defina seus vhosts:

<VirtualHost *:443>
  ServerName www.siteA.com
  DocumentRoot "/opt/apache22/htdocs/siteA"
  SSLCertificateFile "/path/to/my/cert"
  SSLCertificateKeyFile "/path/to/my/key"
</VirtualHost>
<VirtualHost *:443>
  ServerName www.siteB.com
  DocumentRoot "/opt/apache22/htdocs/siteB"
  SSLCertificateFile "/path/to/my/cert"
  SSLCertificateKeyFile "/path/to/my/key"
</VirtualHost>

Eu usei este link como um recurso.

    
por 15.02.2010 / 21:03