Ich habe diese Anleitung befolgt: http://hints.macworld.com/article.php?story=20041129143420344
Hier ist meine Definition des virtuellen Hosts
<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>
Und wenn ich versuche, eine Verbindung mit dem Webbrowser herzustellen, wird folgende Fehlermeldung angezeigt:
[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 ()
Wie debugge / behebe ich das?
apache-2.2
ssl
https
virtualhost
NullVoxPopuli
quelle
quelle
SSLProxyCheckPeerName
ersetzt,SSLProxyCheckPeerCN
aber es wird nicht funktionieren, wenn Sie nicht alle Anweisungen angeben .Machen Sie sich keine Gedanken über HTTPS zwischen Ihrem Front-End- und Ihrem Back-End-Server. Es macht wenig Sinn, SSL für eine
localhost
Verbindung zu aktivieren .Verwenden Sie zur Verdeutlichung
ProxyPass / http://localhost:3002/
anstelle vonProxyPass / https://localhost:3002/
Wenn Sie Ihren Reverse-Proxy wirklich auch über SSL mit dem Back-End-Server verbinden möchten (meistens nützlich, wenn sich auf diesem Server nicht der Apache-HTTPD-Reverse-Proxy befindet), verwenden Sie zusätzlich
https://backend-server-address
dieSSLProxy*
Anweisungen, um den einzurichten CA-Zertifikate, wie in der Einführung zurmod_proxy
Dokumentation dokumentiert . Insbesondere müssten Sie konfigurierenSSLProxyCACertificateFile
und sicherstellen, dass das Zertifikat des Backend-Servers für den richtigen Hostnamen ausgestellt wird, wie von Apache Httpd gesehen (dhlocalhost
in Ihrem Fall).Wenn Sie keine Verbindung zu Ihrem Back-End-Server über SSL herstellen, wird möglicherweise nicht erkannt, dass Sie tatsächlich SSL verwenden, und es ist so konfiguriert, dass Sie gezwungen sind, zu SSL zu wechseln (daher die unendlichen Weiterleitungen). Möglicherweise möchten Sie ähnliche Mechanismen wie Jetty mit seiner
forwarded
Option betrachten (um dem Back-End mitteilen zu können, dass es sich hinter einem Proxy befindet). Rails kann dies möglicherweiseX-Forwarded-Proto
standardmäßig interpretieren . Fügen Sie in diesem Fall Folgendes zu Ihrer Apache-Konfiguration hinzu (auf dem virtuellen SSL-Host):Es scheint zum Beispiel ein ähnliches Problem zu geben, das hier diskutiert wird.
quelle
Ich hatte ein ähnliches Problem (dieselben Fehlerprotokolle), außer dass der Proxy den https-Verkehr an einen anderen Host weiterleitete.
Da ich faul war und die Hosts in meinem eigenen isolierten Netzwerk sind, haben diese Anweisungen das Problem gelöst:
SSLProxyVerify keine
SSLProxyCheckPeerCN aus
quelle
Wenn der Backend-Server ein veraltetes selbstsigniertes Zertifikat verwendet, ist eine weitere Option erforderlich (wenn kein Zugriff auf den Backend-Server besteht):
SSLProxyCheckPeerExpire aus
quelle