O Wiki Apache tem uma boa página sobre SSL com hosts virtuais usando SNI . Eles descrevem a configuração passo a passo. Vou escrever aqui os principais pontos.
Você precisa do OpenSSL versão 0.9.8f ou posterior. Se você usa o Ubuntu Hardy Heron (8.04) ou mais tarde, você obterá a versão correta. Além disso, o OpenSSL deve ter o TLSExtensions ativado. Este é o caso padrão desde a versão 0.9.8k (Lucid, 10.04). Você versão do Apache deve ter suporte a SNI. Dê uma olhada no seu error.log
:
[warn] Init: hosts virtuais SSL baseados em nome funcionam apenas para clientes com TLS suporte para indicação do nome do servidor (RFC 4366)
Se você encontrar a mensagem acima, o SNI está habilitado e se você vir a mensagem abaixo, o SNI não está embutido.
Você não deve usar hosts virtuais baseados em nome em conjunto com o SSL
Na sua configuração padrão, você deve ter o TLSv1 configurado como um protocolo suportado. Procure a variável SSLProtocol
. Se você não encontrar nenhuma configuração, adicione:
SSLProtocol All -SSLv2
Isso adiciona suporte a todos os sabores conhecidos de SSL e TLS, mas não à versão 2 do SSL.
Agora você precisa configurar seu host virtual e também ativar o suporte SSL ( sudo a2ensite ssl
mais reinicialização do Apache):
<virtualhost *:443>
SSLEngine On
SSLCertificateFile /path/to/your/sslcert
DocumentRoot /path/your/webcontent
</virtualhost>
Além disso, defina SSLStrictSNIVHostCheck on
em sua configuração do Apache ou vhost. Agora você pode reiniciar seu Apache e provavelmente terá suporte a SSL. No entanto, o SNI tem muitas armadilhas. Se você encontrar algum erro, verifique seu error.log. Pode dar conselhos sobre o que deu errado.
A documentação do Apache tem algumas descrição detalhada sobre o suporte SSL .