ProxyPassを使用してHTTPS要求を別のサーバーに渡すApacheサーバーをセットアップしようとしています。
プロキシサーバーALPHAとターゲットサーバーBETAを呼び出しましょう。
ALPHAはHTTPSを実行しませんが、BETAは実行します。
私は最初にALPHAでこの仮想ホスト仕様を使用してみました:
<VirtualHost *:443>
ServerName mysite.com
ProxyPass / https://192.168.1.105/ # BETA's IP address
ProxyPassReverse / https://192.168.1.105/ # BETA's IP address
ProxyPreserveHost On
ProxyTimeout 600
SSLProxyEngine On
RequestHeader set Front-End-Https "On"
CacheDisable *
</VirtualHost>
しかし、これを試したとき、Apacheは「[エラー]サーバーはSSL対応である必要がありますが、証明書は構成されていません[ヒント:SSLCertificateFile]」と不平を言いました。
SSL証明書をBETAからALPHAにコピーし、これらの行をALPHAの仮想ホスト仕様に追加する必要がありました。
SSLEngine on
SSLCertificateKeyFile /usr/local/ssl/private/BETA_private.key
SSLCertificateFile /usr/local/ssl/crt/BETA_public.crt
SSLCertificateChainFile /usr/local/ssl/crt/BETA_intermediate.crt
これでシステムが機能します。しかし、私は何か間違ったことや不必要なことをしたと感じています。アルファ版とベータ版の両方にWebサイトの秘密キーと証明書があります。それは必要ですか?違うやり方でやるべきだったのですか?
トラフィックを2回暗号化しているようです-1回はWANで、もう1回はLANで。通常、安全なLAN接続でトラフィックを暗号化する必要はないため、 リバースプロキシ は SSL終端ポイント として設定されます。
Apache構成から、リバースプロキシ(サーバーアルファ)は、プライベートIPアドレス(192.168.1.105)を介してWebサーバー(サーバーベータ)に接続しています。 SSL証明書にあるホスト名でリバースプロキシにアクセスすると仮定します。
WANを介して接続するユーザーに対してSSLが適切に機能するには、リバースプロキシ(サーバーアルファ)に証明書、キー、およびキーチェーンをインストールする必要があります。 Webサーバー(Server BETA)については、ユーザーが直接接続していない場合、有効なSSL証明書をインストールする必要はありません。