Configurando SSL reverso para proxy SSL (de preferência usando Squid ou Apache)

Configurando SSL reverso para proxy SSL (de preferência usando Squid ou Apache)

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.

informação relacionada