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

11

Preciso hospedar vários hosts virtuais do Apache com SSL a partir 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 basicamente quebra a possibilidade de hosts virtuais SSL usando um certificado SSL padrão.

Eu obtive um Certificado de Comunicação Unificada (UCC), também conhecido como certificado de Nome Alternativo do Assunto (SAN). Isso me permite servir o mesmo certificado para vários domínios.

Gostaria que este fosse o certificado fornecido pelo Apache para qualquer solicitação SSL - e depois solicite ao Apache que resolva o host virtual como de costume, assim que a criptografia for 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

Embora o Apache possa renegociar a conexão SSL posteriormente, depois de ver o nome do host na solicitação (e faz), é tarde demais para escolher o certificado do servidor correto a ser usado para corresponder ao nome do host da solicitação durante o handshake inicial, resultando em avisos / erros do navegador sobre certificados com o nome do host errado neles.

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

Aliás, é possível ter vários hosts virtuais nomeados protegidos por SSL em um único endereço IP - eu faço isso no meu site - mas produz todos os tipos de avisos nos logs do Apache e avisos de certificado no navegador. Eu certamente não recomendaria para um site de produção que precisa parecer limpo. -David 31/07 às 4:58

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

Host virtual Vários sites SSL em um único endereço IP. Hospedar vários sites habilitados para SSL em um único servidor normalmente requer um endereço IP exclusivo por site, mas um certificado com Nomes Alternativos de Assunto pode resolver esse problema. O Microsoft IIS 6 e o ​​Apache podem acessar sites HTTPS de host virtual usando o Unified Communications SSL, também conhecido como certificados SAN.


Por favor ajude.

Mikuso
fonte

Respostas:

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 esse link como um recurso.

micah
fonte
1
A resposta está correta. Uma coisa que me atrapalhou por um tempo LOOOONNNNNGGGGG foi que eu tive um erro de digitação onde eu tinha <Virtual *:433>... a porta correta é 443! Ugh, horas da minha vida perdidos em um presente ... A esperança a minha dor não foi em vão e isso ajuda a alguém ...
Nick P.