web-dev-qa-db-ja.com

SSLを使用したプロキシ

Apacheを実行しているLinuxホストとIISを実行しているWindowsホストがあります。 Linuxホストを指すドメインがあり、それに対するリクエストをIISにリレー(プロキシ)する必要があります。したがって、Apacheには次の仮想ホスト定義があります(正常に機能します)。

<VirtualHost 192.168.0.2:80>
    ServerName www.acme.com
    DocumentRoot /var/www/acme.com

    RewriteEngine On
    RewriteOptions Inherit
    RewriteRule ^/(.*) http://win.acme.com/$1 [P]
</VirtualHost>

次に、SSLサポートを追加します。定義は次のようになります。

<VirtualHost 192.168.0.2:443>
    ServerName www.acme.com
    DocumentRoot /var/www/acme.com
    GnuTLSEnable On
    GnuTLSPriorities NORMAL:%COMPAT
    GnuTLSCertificateFile /var/www/ssl/www.acme.com.crt
    GnuTLSKeyFile /var/www/ssl/www.acme.com.key

    RewriteEngine On
    RewriteOptions Inherit
    RewriteRule ^/(.*) https://win.acme.com/$1 [P]
</VirtualHost>

両方のウェブサーバーに有効で信頼できる証明書があり、https://win.acme.comしかし、私がhttps://www.acme.com 500内部サーバーエラーメッセージが表示されます。エラーログを見ると、次のことがわかります。

[2011年7月20日水曜日08:35:34] [エラー] [クライアント76.168.166.70] www.wileybits.com:80に対してSSLプロキシがリクエストされたが有効になっていない[ヒント:SSLProxyEngine] [2011年7月20日水曜日08:35:34] [エラー]プロキシ:HTTPS:74.166.186.70:443(win.acme.com)のSSLサポートを有効にできませんでした

プロキシリクエストが間違ったドメイン(wileybits)のものであるように見えることに注意してください...表示されるドメインもApacheサーバーによってホストされていますが、acme.comのログに表示される理由がわかりません(逆)おそらくDNSルックアップ?)

いずれにしても、私は何が欠けていますか?

事前に感謝-ekkis

追伸ホスト名とアドレスは、無実を保護するために変更されました:)

*更新*

で:

RewriteRule ^/(.*) https://win.acme.com/$1 [R,L]

それはうまくいくようですが、もちろん、Windowsのホスト名が見えるようになります。これは私のシナリオでは受け入れられません

私も試しました(mod_rewriteの代わりに):

ProxyRequests Off
ProxyPass / https://win.acme.com/

しかし、同じエラー

42
ekkis

それを考え出した...明らかに私はこれを行うことができます:

SSLProxyEngine On
RequestHeader set Front-End-Https "On"
ProxyPass / https://win.acme.com/
ProxyPassReverse / https://win.acme.com/
CacheDisable *

そしてそれはうまく動作します!

[解決策は3cx.orgの mikegの投稿 ]

82
ekkis

このエラーの原因は定かではありませんが、SquidまたはVarnishを使用してこれを達成してみてください。以前は、Squidを使用して安全なWindows IISインスタンスを問題なくプロキシしました。

0
Will Bonde