Aparentemente, a única diretiva que faltava era SSLProxyCheckPeerName off
. Agora funciona.
Eu tenho um servidor frontend.example.com
com o IP público. É o Apache (2.4) que deve fazer proxy do tráfego vindo de service1.example.com
(alias DNS para frontend.example.com
).
service1.example.com
é uma VM em uma LAN privada ( 192.168.56.0
) entre as duas.
Agora, isso é fácil para o HTTP:
<VirtualHost *:80>
ServerName service1.example.com
ProxyPass / http://192.168.56.2/
ProxyPassReverse / http://192.168.56.2/
<Location "/">
Require all granted
</Location>
</VirtualHost>
Estou tentando fazer o mesmo para HTTPS:
<VirtualHost *:443>
ServerName service1.example.com
SSLEngine On
SSLProxyEngine On
ProxyRequests Off
SSLProxyCheckPeerCN off
SSLProxyCheckPeerExpire off
SSLInsecureRenegotiation on
SSLProxyVerify none
SSLVerifyClient none
SSLCertificateFile /etc/ssl/certs/example_com.crt
SSLCertificateKeyFile /etc/ssl/certs/example_com.key
ProxyPass / https://192.168.56.2/
ProxyPassReverse / https://192.168.56.2/
<Location "/">
Require all granted
</Location>
</VirtualHost>
Tentando acessar service1.example.com
via retornos HTTPS: Erro durante o handshake SSL com o servidor remoto
A segurança não é minha preocupação aqui. service1
requer uma conexão HTTPS com alguns de seus serviços, é por isso que não estou simplesmente fazendo proxy de HTTPS para HTTP.
Eu não quero que frontend.example.com
esteja envolvido com o SSL. O que eu gostaria é que diga "ei, eu tenho uma conexão no 443, não estou lidando com isso, estou apenas encaminhando para esse IP interno, que vai cuidar disso". Eu só quero que ele passe o pedido.
Isso pode ser feito?
Como você pode ver na configuração HTTPS acima, eu tentei relaxar a segurança tanto quanto possível (por exemplo, SSLInsecureRenegotiation on
deve diminuir as barreiras contra um ataque man-in-the-middle, não é? ?) Mas nada funcionou até agora.
Tags mod-ssl apache-2.4 mod-proxy