Precisa de ajuda para solucionar problemas Ocorreu um erro no servidor da Web - Falha no handshake SSL

9

Eu segui este guia: link

Aqui está minha definição de host virtual

<VirtualHost *:443>
    SSLEngine on
    SSLProxyEngine On
    RequestHeader set Front-End-Https "On"
    CacheDisable *
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    DocumentRoot "/Users/me/projects/myproject/public"
    ServerName ssl.mydomain.com
    ServerAlias *.ssl.mydomain.com
    SSLCertificateKeyFile "/private/etc/apache2/certs/webserver.nopass.key"
    SSLCertificateFile "/private/etc/apache2/certs/newcert.pem"
    SSLCACertificateFile "/private/etc/apache2/certs/demoCA/cacert.pem"
    SSLCARevocationPath "/private/etc/apache2/certs/demoCA/crl"
    ErrorLog "/Users/me/Desktop/ssl.log"

    ProxyPass / https://localhost:3002/
    ProxyPassReverse / https://localhost:3002
    ProxyPreserveHost on    
</VirtualHost>

E quando eu tento conectar o sevre viov ao navegador, recebo este erro:

[Thu Feb 02 16:50:40 2012] [error] (502)Unknown error: 502: proxy: pass request body failed to 127.0.0.1:3002 (localhost)
[Thu Feb 02 16:50:40 2012] [error] [client 96.11.81.39] proxy: Error during SSL Handshake with remote server returned by /session/new
[Thu Feb 02 16:50:40 2012] [error] proxy: pass request body failed to 127.0.0.1:3002 (localhost) from 96.11.81.39 ()

como faço para depurar / corrigir isso?

    
por NullVoxPopuli 02.02.2012 / 23:01

4 respostas

12

Para adicionar a resposta de vbartoni, parece que a partir do Apache 2.4 e acima, existem diferentes padrões e uma nova diretiva.

Estou executando o Apache 2.4.6 e tive que adicionar as seguintes diretivas para que funcione:

SSLProxyEngine on
SSLProxyVerify none 
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
    
por 27.02.2014 / 14:15
3

Não se preocupe com HTTPS entre seu front-end e seu servidor back-end, não há sentido em ativar o SSL para uma localhost de conexão.

Para esclarecer, use ProxyPass / http://localhost:3002/ em vez de ProxyPass / https://localhost:3002/

Como alternativa, se você realmente quiser conectar seu proxy reverso ao servidor de backend usando SSL também (principalmente útil quando esse servidor não é o local do proxy reverso do Apache Httpd), além de https://backend-server-address , use as diretivas SSLProxy* para configurar os certificados de CA, conforme documentado na introdução à documentação mod_proxy . Em particular, você precisaria configurar SSLProxyCACertificateFile e certificar-se de que o certificado do servidor backend é emitido para o nome do host correto como visto pelo Apache Httpd (ou seja, localhost no seu caso). / p>

Se você não estiver se conectando ao seu servidor de back-end usando SSL, ele poderá falhar ao detectar que você está realmente usando SSL e configurado para forçá-lo a ir para SSL (daí os redirecionamentos infinitos). Você pode querer ver mecanismos similares aos que o Jetty faz com sua opção forwarded (para poder para dizer ao back-end que está por trás de um proxy). Rails pode ser capaz de interpretar o X-Forwarded-Proto por padrão. Neste caso, adicione isto à sua configuração do Apache (no host virtual SSL):

RequestHeader set X-Forwarded-Proto 'https'

Parece haver um problema semelhante discutido aqui , por exemplo.

    
por 03.02.2012 / 21:04
3

Eu tive um problema semelhante (os mesmos logs de erro), exceto que o proxy estava encaminhando o tráfego https para outro host.
Como eu era preguiçoso e os anfitriões estão em minha própria rede isolada, essas diretivas resolveram o problema:

SSLProxyVerify none
SSLProxyCheckPeerCN desativado

    
por 25.05.2012 / 10:39
1

Se o servidor de back-end usar um certificado auto-assinado desatualizado, será necessária mais uma opção (se não houver acesso ao servidor de back-end):

SSLProxyCheckPeerExpira desativado

    
por 02.02.2015 / 19:19