代理:错误 AH00898:与远程服务器 SSL 握手期间出错

代理:错误 AH00898:与远程服务器 SSL 握手期间出错

我有一台服务器,它充当网络中 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

如果后端服务器使用过时的自签名证书,则需要再增加一个选项(如果无法访问后端服务器):

SSLProxyCheckPeerExpire off

答案3

我也遇到了同样的错误,但就我而言,这里接受的答案解决了这个错误:https://stackoverflow.com/questions/47718508/apache-proxypass-https-and-remote-server-with-sni

我补充道

ProxyAddHeaders off
ProxyPreserveHost off

答案4

不要忘记在更新证书后重新启动后端服务器,以防它无法检测到证书文件是否已更新。因此您不需要设置该SSLProxyCheckPeerExpire off指令。

相关内容