Problema ao configurar o servidor apache para fazer proxy em uma conexão SSL

1

Estou executando um aplicativo no Tomcat7 com Apache Portable Runtime, comprei um certificado SSL e configurei-o corretamente - quando tento conectar-me por meio da combinação ip: port, ele se conecta bem, mas avisa que o certificado foi emitido para o nome de domínio, não o IP.

O VPS que eu estou ligado não tem o SELinux (e há um problema de instalação), que é requerido pelo AFAIK que o SSL seja configurado no apache, então eu quero apenas rotear os pedidos para o Tomcat, que faz isso no seu fim.

Eu configurei o apache para fazer proxy nas conexões, primeiro com a porta 80 que funciona perfeitamente:

NameVirtualHost www.mysite.com:80
<VirtualHost www.mysite.com:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName http://www.mysite.com
ServerAlias http://www.mysite.com
ProxyPass / http://localhost:8180/MYSITE/
ProxyPassReverse / http://localhost:8180/MYSITE/
ProxyPassReverseCookiePath /MYSITE/ /
</VirtualHost>

E, em seguida, com a porta SSL que não quer funcionar por algum motivo:

NameVirtualHost www.mysite.com:443
<VirtualHost www.mysite.com:443>
        SSLProxyEngine On
        ProxyPreserveHost On
        ProxyRequests Off
        ServerName https://www.mysite.com
        ServerAlias https://www.mysite.com
        ProxyPass / https://localhost:8443/MYSITE/
        ProxyPassReverse / https://localhost:8443/MYSITE/
        ProxyPassReverseCookiePath /MYSITE/ /
        CacheDisable *
</VirtualHost>

EDITAR : Eu adicionei o

RequestHeader set Front-End-Https "On"

diretriz para o VirtualHost www.mysite.com:443, conforme: link

Aqui está o conector do Tomcat APR conforme configurado no server.xml do Tomcat -

<Connector port="8443" maxHttpHeaderSize="16500"
                 maxThreads="150"
                 enableLookups="false" disableUploadTimeout="true"
                 acceptCount="100" scheme="https" secure="true"
                 SSLEnabled="true"
                 SSLCertificateFile="x509-cert-path"
                 SSLCertificateKeyFile="key-file-path"
 />

Não houve erros / avisos que permitissem os hosts virtuais e reiniciassem o apache. Quando eu tento https, isso é o que eu vejo no FFox:

SSL received a record that exceeded the maximum permissible length.

(Error code: ssl_error_rx_record_too_long)

E no Chromium:

Error 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL protocol error.

O error.log do Apache mostra esta mensagem de aviso:

[warn] [client 216.58.38.90] proxy: no HTTP 0.9 request (with no host line) on incoming request and preserve host set forcing hostname to be www.mysite.com for uri /

Passei dias tentando configurá-lo e ficaria muito grato se alguém explicasse o que está acontecendo e como corrigi-lo.

Muito obrigado. Victor.

    
por vivri 07.08.2013 / 17:51

1 resposta

4

O erro que você está recebendo provavelmente se deve ao fato de que seu cliente (Firefox) está tentando usar SSL, mas seu host virtual Apache não tem SSL ativado.

Para que seus clientes possam se comunicar via SSL com seu proxy de front-end, você precisará fazer SSL no front-end, não no Tomcat. Você não ganha absolutamente nada usando SSL entre o Apache e o Tomcat.

No seu bloco <VirtualHost> , você precisará de pelo menos:

SSLEngine On
SSLCertificateFile ...
SSLCertificateKeyFile ...

Além disso, observe que o SELinux não tem absolutamente nada a ver com SSL, além do fato de que um ambiente SELinux configurado incorretamente pode impedir que o Apache leia os certificados SSL necessários.

Se você não está usando o Apache como algo diferente de um proxy simples e não está realmente confortável com a configuração do Apache, você pode, em teoria, se livrar dele e apenas ouvir o Tomcat na porta 443 (modificando o% co_de apropriado). % de bloqueio).

    
por 08.08.2013 / 17:55