Apache ProxyPass z SSL

59

Chcę wysyłać żądania proxy z witryny SSL za pośrednictwem strony innej niż SSL. Mój serwer Apache httpd.conf wygląda następująco:

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

Tak więc, kiedy odwiedzam http://foo.com , oczekuję, że apache prześle żądanie do https://bar.com i wyśle ​​mi stronę, którą sprowadził.

Zamiast tego pojawia się błąd 500, aw dzienniku błędów widzę:

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

Prawdopodobnie brakuje mi tutaj dyrektywy. Który to może być?

Nie wspominając o implikacjach dla bezpieczeństwa. W pełni rozumiem ryzyko.

tylerl
źródło
Z jakiej wersji Apache korzystasz?
Sam Halicke
1
„Nie wspominając o implikacjach dla bezpieczeństwa. W pełni rozumiem ryzyko”. - To odpowiednik devops dla „Hold My Beer”; )
Eric Kigathi,

Odpowiedzi:

70

Trzeba mod_ssl, mod_proxyi ewentualnie mod_rewrite. W zależności od dystrybucji i wersji Apache może być konieczne sprawdzenie, czy mod_proxy_connecti również mod_proxy_httpsą załadowane.

Dyrektywy dotyczące włączania obsługi proxy SSL znajdują się w 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 możesz także użyć:

    RewriteRule / https://secure.bar.com [P]    # don't forget to setup SSLProxy* as well
Sam Halicke
źródło
2

W Apache 1.x mod_sslnaprawiłoby ProxyPass. Czy masz mod_sslzainstalowany?

Jim Zajkowski
źródło