прокси: ошибка AH00898: ошибка во время SSL рукопожатия с удаленным сервером

16

У меня есть сервер, который выступает в качестве внешнего интерфейса для почтового сервера cPanel в сети. Прокси-сервер apache на сервере переднего плана работал без сбоев в течение 152 дней, а затем внезапно я получаю ошибки 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

Внешний сервер - это экземпляр EC2, на котором выполняется Apache/2.4.6 (Amazon) настройка My VirtualHost для прокси на этом сервере:

< 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>

Насколько я могу судить, на внешнем сервере ничего не изменилось, я не обновлял и ничего не делал, однажды заметив эту проблему и безуспешно пытаясь справиться, я попытался перезагрузить оба сервера, но ничего не сделал, чтобы это исправить.

Какие-либо предложения?

DePages
источник

Ответы:

32

Наткнулся на ту же проблему с версией сервера: Apache / 2.4.6

Согласно документации в [1], « В версии 2.4.5 и позже SSLProxyCheckPeerCN был заменен SSLProxyCheckPeerName, и его настройка принимается во внимание только в том случае, если одновременно отключено SSLProxyCheckPeerName ».

Таким образом, добавив следующую запись сделали свое дело:

SSLProxyCheckPeerName off

Так что мой рабочий конфиг выглядит так ...

    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

Павитра Мадуранги
источник
1
Обратите внимание, что «SSLEngine On» относится не к прокси-части конфигурации, а к обслуживанию этого запроса через SSL / TLS, даже если он сгруппирован с параметрами конфигурации прокси.
Персеиды
14

Если внутренний сервер использует устаревший самозаверяющий сертификат, необходим еще один параметр (если нет доступа к внутреннему серверу):

SSLProxyCheckPeerExpire off
Милан Керслагер
источник
Это сработало для меня при миграции обратного прокси с apache 2.2 на 2.4
Segolas