O Apache apresenta certificado errado quando acessado via balanceador de carga [duplicado]

1

Eu tenho um servidor que tem dois certificados SSL configurados, um para acesso interno, onde é acessado nas linhas de host.my-local.net e outro para acesso externo, onde é acessado de forma semelhante a 185.185.185.185 (isso não é o endereço IP real, mas é um endereço IP, pois não há nome de host atribuído a ele). Quando acessado através do endereço externo, a conexão está passando por um balanceador de carga / firewall para o qual não tenho acesso, tudo o que sei é que ele traduz conexões de entrada em uma porta específica para o endereço interno na porta SSL. / p>

O problema é que, quando uma conexão externa entra, recebo o aviso do navegador de que o site está se disfarçando como host.my-local.net ; está apresentando o certificado para host.my-local.net em vez de 185.185.185.185 . Eu tenho um host virtual configurado para ambos os nomes no meu arquivo de configuração apache2, por isso suponho que, por algum motivo, o servidor está tendo problemas para distinguir entre uma conexão externa e uma conexão de rede local. Eu não tive esse problema com um NAT simples, então não sei por que faria diferença se o balanceador de carga estivesse fazendo a solicitação parecer que vem da LAN em vez de internamente.

Verifiquei que o navegador que estou usando suporta o SNI (Google Chrome) e o Apache 2.4, aparentemente, o suporta desde o início sem exigir a diretiva NameVirtualHost. No entanto, a documentação diz:

In 2.3.11 and later, any time an IP address and port combination is used in 
multiple virtual hosts, name-based virtual hosting is automatically enabled 
for that address.

No entanto, não é o mesmo endereço IP usado nos dois hosts virtuais diferentes, um é o endereço IP interno (LAN) e um é o endereço IP externo (visível ao mundo), o que se aplica aqui?

Para esclarecer minha configuração, tenho dois hosts virtuais configurados, assim:

<VirtualHost 185.185.185.185:443>
# here i specify the certificate for 185.185.185.185, e.g.
SSLCertificateFile /etc/ssl/private/185.185.185.185.crt
</VirtualHost>
<VirtualHost host.my-local.net:443>
# here i specify the certificate for host.my-local.net, e.g.
SSLCertificateFile /etc/ssl/private/host.my-local.net.crt
</VirtualHost>
    
por Michael 26.11.2014 / 20:34

1 resposta

1

Graças a um comentário do @ShaneMadden, consegui descobrir isso.

Esse problema é que eu preciso dos dois VirtualHosts para especificar o mesmo IP usando um curinga. Então, minha configuração precisa ser assim:

<VirtualHost *:443>
# here i specify the certificate for 185.185.185.185, e.g.
SSLCertificateFile /etc/ssl/private/185.185.185.185.crt
ServerName 185.185.185.185
</VirtualHost>
<VirtualHost *:443>
# here i specify the certificate for host.my-local.net, e.g.
SSLCertificateFile /etc/ssl/private/host.my-local.net.crt
ServerName host.my-local.net
</VirtualHost>
    
por 26.11.2014 / 20:49