Postępowałem zgodnie z tym przewodnikiem: http://hints.macworld.com/article.php?story=20041129143420344
Oto moja definicja wirtualnego hosta
<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>
Kiedy próbuję połączyć się z przeglądarką sevre viov, pojawia się błąd:
[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 ()
jak to debugować / naprawić?
apache-2.2
ssl
https
virtualhost
NullVoxPopuli
źródło
źródło
SSLProxyCheckPeerName
zastępuje,SSLProxyCheckPeerCN
ale nie będzie działać, chyba że podasz wszystkie dyrektywy.Nie przejmuj się HTTPS między front-endem a serwerem back-end, włączenie protokołu SSL dla
localhost
połączenia nie ma sensu .Aby to wyjaśnić, użyj
ProxyPass / http://localhost:3002/
zamiastProxyPass / https://localhost:3002/
Ewentualnie, jeśli naprawdę chcesz połączyć swój zwrotny serwer proxy z serwerem zaplecza również za pomocą protokołu SSL (co jest szczególnie przydatne, gdy na tym serwerze nie ma odwrotnego serwera proxy Apache Httpd)
https://backend-server-address
, skorzystaj zSSLProxy*
dyrektyw, aby skonfigurować Certyfikaty CA, jak udokumentowano we wstępie domod_proxy
dokumentacji . W szczególności należy skonfigurowaćSSLProxyCACertificateFile
i upewnić się, że certyfikat serwera zaplecza jest wydawany na poprawną nazwę hosta widoczną w Apache Httpd (tj.localhost
W twoim przypadku).Jeśli nie łączysz się z serwerem zaplecza za pomocą protokołu SSL, może nie wykryć, że faktycznie używasz protokołu SSL, i zostać skonfigurowanym tak, aby zmusić cię do przejścia na protokół SSL (stąd nieskończone przekierowania). Możesz przyjrzeć się mechanizmom podobnym do tego, co robi Jetty z tą
forwarded
opcją (aby móc powiedzieć back-endowi, że stoi za serwerem proxy). Szyny mogąX-Forwarded-Proto
domyślnie być w stanie interpretować . W takim przypadku dodaj to do konfiguracji Apache (na wirtualnym hoście SSL):Wydaje się, że poruszono tutaj podobną kwestię .
źródło
Miałem podobny problem (te same dzienniki błędów), z tym wyjątkiem, że serwer proxy przekierowywał ruch https na inny host.
Ponieważ byłem leniwy, a hosty znajdują się w mojej izolowanej sieci, te dyrektywy rozwiązały problem:
SSLProxyVerify none
SSLProxyCheckPeerCN wyłączony
źródło
Jeśli serwer zaplecza korzysta z nieaktualnego samopodpisanego certyfikatu, potrzebna jest jeszcze jedna opcja (jeśli nie ma dostępu do serwera zaplecza):
SSLProxyCheckPeerExpire off
źródło