Seguí esta guía: http://hints.macworld.com/article.php?story=20041129143420344
Aquí está mi definición 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>
Y cuando intento conectarme al servidor web, aparece este error:
[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 ()
¿Cómo depuro / soluciono esto?
apache-2.2
ssl
https
virtualhost
NullVoxPopuli
fuente
fuente
SSLProxyCheckPeerName
reemplazaSSLProxyCheckPeerCN
pero no funcionará a menos que especifique todas las directivas.No se moleste con HTTPS entre su servidor front-end y su servidor back-end, no tiene mucho sentido habilitar SSL para una
localhost
conexión.Para aclarar, use en
ProxyPass / http://localhost:3002/
lugar deProxyPass / https://localhost:3002/
Alternativamente, si realmente desea conectar su proxy inverso al servidor de fondo utilizando SSL también (sobre todo útil cuando ese servidor no está donde está el proxy inverso Apache Httpd), además de
https://backend-server-address
, use lasSSLProxy*
directivas para configurar el Certificados de CA, como se documenta en la introducción a lamod_proxy
documentación . En particular, deberá configurarSSLProxyCACertificateFile
y asegurarse de que el certificado del servidor de fondo se emita con el nombre de host correcto como lo ve Apache Httpd (es decir,localhost
en su caso).Si no se está conectando a su servidor back-end utilizando SSL, es posible que no detecte que realmente está utilizando SSL y esté configurado para obligarlo a ir a SSL (de ahí las redirecciones infinitas). Es posible que desee ver mecanismos similares a los que hace Jetty con su
forwarded
opción (para poder decirle al back-end que está detrás de un proxy). Los rieles pueden ser capaces de interpretarX-Forwarded-Proto
por defecto. En este caso, agregue esto a su configuración de Apache (en el host virtual SSL):Parece que hay un problema similar discutido aquí , por ejemplo.
fuente
Tuve un problema similar (los mismos registros de error), excepto que el proxy estaba reenviando el tráfico https a otro host.
Como era flojo y los hosts están en mi propia red aislada, estas directivas resolvieron el problema:
SSLProxyVerify none
SSLProxyCheckPeerCN off
fuente
Si el servidor de fondo utiliza un certificado autofirmado desactualizado, se necesita una opción más (si no hay acceso al servidor de fondo):
SSLProxyCheckPeerExpire off
fuente