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

DeP*_*ges 21 ssl reverse-proxy amazon-ec2 apache-2.2

我有一台服务器,它充当网络中 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 /
Run Code Online (Sandbox Code Playgroud)

< /VirtualHost>

据我所知,前端服务器上没有任何变化,我没有做更新或任何事情,一旦注意到这个问题并且摆弄没有成功,我尝试在两台服务器上重新启动,但它没有解决这个问题。

有什么建议?

小智 40

遇到服务器版本相同的问题: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
Run Code Online (Sandbox Code Playgroud)

[1] http://httpd.apache.org/docs/2.4/mod/mod_ssl.html

  • 请注意,“SSLEngine On”与配置的代理部分无关,而是通过 SSL/TLS _serving_ 此请求,即使它与代理配置选项分组。 (2认同)

Mil*_*ger 15

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

SSLProxyCheckPeerExpire off
Run Code Online (Sandbox Code Playgroud)