Apache ProxyPass mit SSL

59

Ich möchte Anfragen von einer SSL-Site über eine Nicht-SSL-Site vertreten. Meine Apache httpd.conf sieht so aus:

<VirtualHost 1.2.3.4:80>
    ServerName foo.com
    ProxyPass / https://bar.com/
</VirtualHost>

Wenn ich also http://foo.com besuche , erwarte ich, dass Apache eine Anfrage an https://bar.com sendet und mir die abgerufene Seite sendet.

Stattdessen erhalte ich einen 500-Fehler und im Fehlerprotokoll wird Folgendes angezeigt:

[error] proxy: HTTPS: failed to enable ssl support for 4.3.2.1:443 (bar.com)

Vermutlich fehlt mir hier eine Richtlinie. Welches könnte es sein?

Beachten Sie nicht die Auswirkungen auf die Sicherheit. Ich verstehe die Risiken voll und ganz.

tylerl
quelle
Welche Version von Apache verwenden Sie?
Sam Halicke
1
"Egal, welche Auswirkungen die Sicherheit hat. Ich verstehe die Risiken genau." - Dies ist das Devops-Äquivalent von "Hold My Beer"; )
Eric Kigathi

Antworten:

70

Sie benötigen mod_ssl, mod_proxyund optional mod_rewrite. Abhängig von Ihrer Distribution und Apache-Version müssen Sie möglicherweise überprüfen, ob mod_proxy_connectund mod_proxy_httpwerden auch geladen.

Die Anweisungen zum Aktivieren der SSL-Proxy-Unterstützung befinden sich in mod_ssl:

<VirtualHost 1.2.3.4:80>
    ServerName foo.com
    SSLProxyEngine On
    SSLProxyCheckPeerCN on
    SSLProxyCheckPeerExpire on
    ProxyPass / https://secure.bar.com
    ProxyPassReverse / https://secure.bar.com
</VirtualHost>

IIRC können Sie auch verwenden:

    RewriteRule / https://secure.bar.com [P]    # don't forget to setup SSLProxy* as well
Sam Halicke
quelle
2

In Apache 1.x mod_sslwürde ProxyPass reparieren. Hast du mod_sslinstalliert?

Jim Zajkowski
quelle