ネットワーク内の cPanel メールサーバーのフロントエンドとして機能するサーバーがあります。フロントエンド サーバーの Apache プロキシは 152 日間問題なく動作していましたが、突然、メールサーバーの Web メール クライアントにアクセスする際に 500/502 エラーが発生するようになりました。
フロントエンド サーバーは署名された SSL 証明書を使用し、cPanel サーバーは自己署名証明書を使用しています。これが最初に発生し始めたときのフロントエンド サーバーからのエラー ログ出力です。
[Tue Sep 10 18:22:52.959291 2013] [proxy:error] [pid 19531] (502)Unknown error 502: [client 173.xx.xx.xx:9558] AH01084: pass request body failed to 184.xx.xx.xx:2096 (184.xx.xx.xx), referer: https://domain.com:2096/cpsess12385596/3rdparty/roundcube/?_task=mail&_refresh=1&_mbox=INBOX
[Tue Sep 10 18:22:52.959469 2013] [proxy:error] [pid 19531] [client 173.xx.xx.xx:9558] AH00898: Error during SSL Handshake with remote server returned by /cpsess12385596/3rdparty/roundcube/, referer: https://domain.com:2096/cpsess12385596/3rdparty/roundcube/?_task=mail&_refresh=1&_mbox=INBOX
フロントエンド サーバーは、Apache/2.4.6 (Amazon)
このサーバー上のプロキシの My VirtualHost セットアップを実行する EC2 インスタンスです。
< VirtualHost *:2096> ServerName domain.com
SSLEngine on
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLCertificateFile /x/x/x/domain.com.crt
SSLCertificateKeyFile /x/x/x/domain.com.key
SSLCACertificateFile /x/x/x/domain.com.cabundle
ProxyPass / https://184.xx.xx.xx:2096/
ProxyPassReverse / https://184.xx.xx.xx:2096/
ProxyPassReverseCookieDomain 184.xx.xx.xx:2096 domain.com
ProxyPassReverseCookiePath / /
SetOutputFilter INFLATE;proxy-html;DEFLATE
ProxyHTMLURLMap https://184.xx.xx.xx:2096 /
< /VirtualHost>
私の知る限り、フロントエンド サーバーでは何も変更されていません。更新も何も行っていません。この問題に気づいて試行錯誤しましたが、うまくいかなかったので、両方のサーバーを再起動しようとしましたが、問題は解決しませんでした。
助言がありますか?
答え1
サーバーバージョン: Apache/2.4.6 でも同じ問題が発生しました
[1]の文書によれば、「2.4.5以降では、SSLProxyCheckPeerCNはSSLProxyCheckPeerNameに置き換えられ、その設定はSSLProxyCheckPeerName offが同時に指定された場合にのみ考慮されます。」
そこで、次のエントリを追加するとうまくいきました。
SSLProxyCheckPeerName オフ
私の作業構成は次のようになります...
ProxyRequests Off
SSLEngine On
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLCertificateFile /x/x/keys/server.crt
SSLCertificateKeyFile /x/x/keys/server.key
[1]詳しくは、http://httpd.apache.org/docs/2.4/mod/mod_ssl.html をご覧ください。
答え2
バックエンド サーバーが古い自己署名証明書を使用している場合は、もう 1 つのオプションが必要です (バックエンド サーバーにアクセスできない場合)。
SSLProxyCheckPeerExpire off
答え3
私も同じエラーが発生していますが、私の場合は、ここで受け入れられた回答によってこのエラーは解決されました。https://stackoverflow.com/questions/47718508/apache-proxypass-https-and-remote-server-with-sni
追加した
ProxyAddHeaders off
ProxyPreserveHost off
答え4
証明書ファイルが更新されたかどうかが検出されない場合に備えて、証明書を更新した後はバックエンド サーバーを再起動することを忘れないでください。そのため、ディレクティブを設定する必要はありませんSSLProxyCheckPeerExpire off
。