Segui este guia: http://hints.macworld.com/article.php?story=20041129143420344
Aqui está a 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 tento conectar-me ao navegador sevre viov, 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?
apache-2.2
ssl
https
virtualhost
NullVoxPopuli
fonte
fonte
SSLProxyCheckPeerName
substitui,SSLProxyCheckPeerCN
mas não funcionará, a menos que você especifique todas as diretivas.Não se preocupe com o HTTPS entre o servidor front-end e o servidor back-end; há pouco sentido em ativar o SSL para uma
localhost
conexão.Para esclarecer, use em
ProxyPass / http://localhost:3002/
vez deProxyPass / https://localhost:3002/
Como alternativa, se você realmente deseja conectar seu proxy reverso ao servidor de back-end usando SSL também (principalmente útil quando esse servidor não estiver onde o proxy reverso do Apache Httpd está), além de
https://backend-server-address
usar asSSLProxy*
diretivas para configurar o Certificados da CA, conforme documentado na introdução àmod_proxy
documentação . Em particular, você precisaria configurarSSLProxyCACertificateFile
e garantir que o certificado do servidor de back-end seja emitido com o nome de host correto, como visto pelo Apache Httpd (isto é,localhost
no seu caso).Se você não estiver se conectando ao servidor back-end usando SSL, poderá não conseguir detectar se você está realmente usando SSL e estar configurado para forçá-lo a ir para SSL (daí os redirecionamentos infinitos). Você pode querer olhar para mecanismos semelhantes ao que o Jetty faz com sua
forwarded
opção (para poder dizer ao back-end que está atrás de um proxy). Os trilhos podem interpretar oX-Forwarded-Proto
por padrão. Nesse caso, adicione isso à sua configuração do Apache (no host virtual SSL):Parece haver uma questão semelhante discutida aqui , por exemplo.
fonte
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 hosts estavam em minha própria rede isolada, essas diretivas resolveram o problema:
SSLProxyVerify none
SSLProxyCheckPeerCN off
fonte
Se o servidor back-end usar certificado autoassinado desatualizado, será necessária mais uma opção (se não houver acesso ao servidor back-end):
SSLProxyCheckPeerExpire off
fonte