Como usar no mesmo servidor Apache2 2 diferentes certificados usando o VirtualHost?
-
20-09-2019 - |
Pergunta
Recebo um certificado de Gandi para um domínio www.mondomaaine.fr, mas para sql.mondomaine.fr eu queria usar um certificado SSL autoassinado.
Se eu ativo sql.mondomaine.fr, o www.mondomaine.fr está usando o certificado autoassinado em vez do Gandiś.
Se eu desativar o SQL. Tudo funciona bem.
Como posso gerenciar o uso de um certificado diferente?
Ele costuma que a primeira configuração do VirtualHost está levando para cada SSL VirtualHost.
Obrigado pela ajuda.
Aqui está minha configuração:
Para phpmyadmin:
<VirtualHost *:443>
# Chemin vers les données web
DocumentRoot /usr/share/phpmyadmin
ServerName sql.mondomaine.fr
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/phpmyadmin.pem
</VirtualHost>
Para mondomaine.fr
<VirtualHost *:443>
ServerName www.mondomaine.fr
DocumentRoot /var/www/mondomaine/
CustomLog /var/log/apache2/secure_access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/mondomaine.fr.crt
SSLCertificateKeyFile /etc/ssl/mondomaine.fr.key
SSLCACertificateFile /etc/ssl/GandiStandardSSLCA.pem
SSLVerifyClient None
</VirtualHost>
A configuração está correta porque, se a primeira leitura virtualhost for phpmyadmin.pem modss, use este e se for mondomaine.fr.crt o primeiro virtualhost, o apache usa este.
Solução
Você está enfrentando um problema geral com o HTTP sobre o SSL - quando um cliente se conecta, ele especifica qual host que ele deseja se conectar ao uso do host: HTTP Cabeçalho, mas isso só vem depois O aperto de mão SSL (quando o certificado é apresentado) foi concluído. Versões recentes das extensões de suporte do TLS (especificadas no RFC 4366) que permitem ao cliente especificar a qual host ele pretende se conectar durante o aperto de mão SSL, com a intenção específica de apoiar VHOSTS; Para citar a RFC:
"" "" O TLS não fornece um mecanismo para um cliente informar a um servidor o nome do servidor que está contatando. Pode ser desejável para os clientes fornecer essas informações para facilitar conexões seguras a servidores que hospedam vários servidores 'virtuais' em um Endereço de rede subjacente único. "" "
De acordo com a Wikipedia, versões recentes de Firefox, Opera, IE, Chrome e Safari apóiam esta extensão; Outros clientes ainda não enviariam a extensão e você está sem sorte para lá. Você também precisa usar pelo menos o TLS 1.1 para ativar o suporte de extensões.
Há algum documentação sobre como configurar isso com o Apache; Você pode precisar reconstruir o OpenSSL e/ou o Apache com opções específicas, dependendo da sua configuração local.
Outras dicas
Depende de como você criou seu certificado. Se você o comprou apenas para o subdomínio WWW, não funcionará para o SQL. O que você precisa fazer é fazer isso para permitir qualquer subdomínio, mas esses certificados são mais caros.
Por outro lado, você pode usar seu próprio ceritificado, você só precisa com certeza sobre o que está colocando ao criar seu virtutalHost
<virtualhost XXX.XXX.XXX.XXX:443>
serverName www.mondomaine.fr
# Gandiś ceritificate
</virtualhost>
<virtualhost XXX.XXX.XXX.XXX:443>
serverName sql.mondomaine.fr
# your own certificate stuff
</virtualhost>