代理:錯誤 AH00898:與遠端伺服器進行 SSL 握手期間出錯

代理:錯誤 AH00898:與遠端伺服器進行 SSL 握手期間出錯

我有一台伺服器,充當網路中 cPanel 郵件伺服器的前端。前端伺服器上的 apache 代理程式運行了 152 天,沒有出現任何故障,然後在使用它存取郵件伺服器的 Webmail 用戶端時突然出現 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指令。

相關內容