Nas últimas horas, tenho tentado colocar um proxy reverso em funcionamento para um aplicativo que agora precisa ser acessado publicamente.
Para problemas de segurança e de provedor que bloqueia a porta 80, o aplicativo só pode ser acessado por https. Eu sei que isso pode ser feito com Apache ou squid (entre outros). Eu tentei ambos e falhei.
A rede atual está configurada assim:
gateway.meudominio.com é o gateway. No gateway, o Apache já está configurado com um SSL vhost padrão e o squid é executado como um proxy de encaminhamento regular.
A aplicação na rede local,https://aplicativo.meudominio.comestá configurado e acessível conforme esperado localmente.
Esta é a configuração que experimentei no squid, no topo do squid conf adicionei uma diretiva include para /etc/squid/application.conf
:
aplicativo.conf:
https_port 443 cert=/etc/pki/tls/certs/localhost.crt key=/etc/pki/tls/private/localhost.key defaultsite=application.mydomain.com vhost
# HTTPS peer
cache_peer https://application.mydomain.com parent 443 0 no-query originserver ssl sslflags=DONT_VERIFY_PEER name=application
cache_mgr root
visible_hostname application.mydomain.com
http_port 443 accel defaultsite=application.mydomain.com
acl all src 0.0.0.0/0.0.0.0
Esta abordagem falha e dá o seguinte erro:
SSL connection error Unable to make a secure connection to the server. This may be a problem with the server, or it may be requiring a client authentication certificate that you don't have. Error 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL protocol error.
Eu então tentei com o apache, pois preferiria manter o gateway escutando na porta https padrão 443. A configuração do squid não funcionaria quando o apache estava escutando em 443, o vhost padrão do apache foi servido.
Isto é o que eu tentei com o apache:
ssl.conf, após vhost padrão
NameVirtualHost application.mydomain.com:443
<VirtualHost application.mydomain.com:443>
ServerName application.mydomain.com
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
CustomLog /var/log/httpd/application_log combined
LogLevel Debug
SSLProxyEngine On
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
# RewriteEngine on
# RewriteRule ^/$ /index.html [R]
ProxyRequests off
ProxyPass / https://application.mydomain.com
ProxyPassReverse / https://application.mydomain.com
</VirtualHost>
Esta seria minha maneira preferida de fazer isso, todos os aplicativos seriam executados na porta 443, mas com essa configuração, não importa o que eu tentasse, o vhost padrão é sempre aquele que está sendo servido.
Se alguém tiver uma pista sobre o squid ou o apache, ficaria muito grato.