Incompatibilidade de proxy reverso http vs https do Apache

3

Eu tenho uma configuração de proxy reverso no Debian 8.2 (Jessie) com Apache 2.4.10-10 + deb8u, onde eu tenho dois hosts virtuais separados, um para http e outro para https, com base na seguinte configuração:

<IfDefine IgnoreBlockComment>
<VirtualHost *:80>
CustomLog /tmp/just_size.log just_size
        DocumentRoot /var/www/
        ServerName XXXXXXXXXX
        TraceEnable off
        RewriteEngine On
        RewriteCond %{REQUEST_METHOD} ^TRACE
        RewriteRule .* - [F]
        ExpiresActive On
        ExpiresByType image/gif "access  plus 1 year"
        ExpiresByType image/jpeg "access  plus 1 year"
        ExpiresByType image/png "access  plus 1 year"
        ExpiresByType audio/mpeg "access  plus 1 year"
        ExpiresByType video/mpeg "access  plus 1 year"
        ExpiresByType text/html "modification plus 5 minutes"
        CustomLog /dev/null combined env=!no-registrar
        ProxyPreserveHost On
        CustomLog /tmp/non_https.log non_https
        ProxyPass /telemetria-ws/  http://10.1.0.116:8080/telemetria-ws/
        ProxyPassReverse /telemetria-ws/  http://10.1.0.116:8080/telemetria-ws/

        ProxyTimeout 1200
    ProxyPass /ecobox-ws/  http://10.1.0.116:8080/ecobox-ws/
        ProxyPassReverse /ecobox-ws/ http://10.1.0.116:8080/ecobox-ws/


        ProxyPass / http://10.1.0.116:8080/WebService/ connectiontimeout=300 timeout=300 KeepAlive=On retry=1 acquire=3000
        ProxyPassReverse / http://10.1.0.116:8080/WebService/
        ProxySet "http://10.1.0.116:8080/WebService/" connectiontimeout=300 timeout=300


        FileETag MTime Size
        Header append X-Frame-Options "DENY"
</VirtualHost>
</IfDefine>

<VirtualHost *:443>
CustomLog /tmp/just_size.log just_size
        ServerName XXXXXXX
        DocumentRoot /var/www
        DirectoryIndex index.php index.html
        TraceEnable off

        RewriteEngine On
        RewriteCond %{REQUEST_METHOD} ^TRACE
        RewriteRule .* - [F]
        #RequestHeader set Front-End-Https "On"

        CustomLog /dev/null combined env=!no-registrar

        ProxyPreserveHost On
        RequestHeader set x-forwarded-server "https://XXXXXXX/"
        RequestHeader set x-forwarded-host "https://XXXXXXX/"
        SSLEngine On
        SSLCertificateKeyFile /etc/apache2/ssl/cert.key
        SSLCertificateFile /etc/apache2/ssl/cert.crt
        SSLCertificateChainFile /etc/apache2/ssl/gd_bundle-g2-g1.crt
        ProxyPass /telemetria-ws/  http://10.1.0.116:8080/telemetria-ws/
        ProxyPassReverse /telemetria-ws/  http://10.1.0.116:8080/telemetria-ws/

        ProxyTimeout 1200


        ProxyPass /TrackViewRealTime/  http://10.1.0.235:8080/TrackViewRealTime/
        ProxyPassReverse /TrackViewRealTime/  http://10.1.0.235:8080/TrackViewRealTime/

        ProxyPass /TrackViewLogin/  http://10.1.0.235:8080/TrackViewLogin/
        ProxyPassReverse /TrackViewLogin/  http://10.1.0.235:8080/TrackViewLogin/

        ProxyPass /TrackViewData/  http://10.1.0.235:8080/TrackViewData/
        ProxyPassReverse /TrackViewData/  http://10.1.0.235:8080/TrackViewData/

    ProxyPass /ecobox-ws/  http://10.1.0.116:8080/ecobox-ws/
        ProxyPassReverse /ecobox-ws/ http://10.1.0.116:8080/ecobox-ws/

                ProxyPass /puerto-coronel-ws/  http://10.1.0.116:8080/puerto-coronel-ws/
        ProxyPassReverse /puerto-coronel-ws/  http://10.1.0.116:8080/puerto-coronel-ws/


ProxyPass / http://10.1.0.116:8080/WebService/ connectiontimeout=300 timeout=300 KeepAlive=On retry=1 acquire=3000
        ProxyPassReverse / http://10.1.0.116:8080/WebService/
        ProxySet "http://10.1.0.116:8080/WebService/" connectiontimeout=300 timeout=300

        FileETag MTime Size
        Header append X-Frame-Options "DENY"
</VirtualHost>

Eu tenho vários serviços da Web (e seu WSDL) expostos a partir do IP interno 10.1.0.116, como você pode ver nas diretivas de configuração Proxy *, o problema é que eu não consegui redirecionar o tráfego HTTP de entrada para aqueles web services, e eles estão trabalhando apenas usando https, então eu acho que deve haver algo errado com a minha configuração do VirtualHost na porta 80.

Ainda mais estranho é quando o URL de solicitação é assim:

http://HOST/telemetria-ws/frioChileTempService/

Recebo uma resposta *, mas vazia, com os seguintes cabeçalhos de resposta:

*ArespostapareceserHTTPS,poiscertificadosválidossãoexibidosnasInformaçõesSSLdoSOAP-UI

Masquandoeuadicionoaporta80aoURL(quedeveseromesmoacima):

link

O servidor interpreta-o como SSL, mas usando uma conexão de texto simples:

Wed Feb 22 10:52:21 ART 2017:ERROR:javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

Onde posso ter a configuração incompatível? O desejado seria redirecionar http simples para https, mas não exatamente entender o que poderia estar acontecendo.

    
por Gonzalo Vasquez 22.02.2017 / 14:56

0 respostas