proxy: błąd AH00898: Błąd podczas uzgadniania SSL ze zdalnym serwerem

16

Mam serwer, który działa jako front-end serwera poczty cPanel w sieci. Serwer proxy Apache na serwerze front-end działał przez 152 dni bez winy, a potem nagle dostaję błędy 500/502, gdy używam go do uzyskiwania dostępu do klientów poczty internetowej serwera poczty.

Serwer frontonu używa podpisanego certyfikatu SSL, serwer cPanel używa certyfikatu z podpisem własnym. Oto dane wyjściowe dziennika błędów z serwera front-end, gdy zaczął się po raz pierwszy:

[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

Serwer frontonu to instancja EC2 z uruchomioną Apache/2.4.6 (Amazon) instalacją My VirtualHost dla proxy na tym serwerze:

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

O ile myślę, że nic się nie zmieniło na serwerze front-end, nie zrobiłem aktualizacji ani nic, zauważając ten problem i majstrując bezskutecznie próbowałem uruchomić ponownie na obu serwerach, ale nic nie naprawiłem.

Jakieś sugestie?

DePages
źródło

Odpowiedzi:

32

Wystąpił ten sam problem z wersją serwera: Apache / 2.4.6

Zgodnie z dokumentacją w [1] „ W wersji 2.4.5 i późniejszej nazwa SSLProxyCheckPeerCN została zastąpiona przez SSLProxyCheckPeerName, a jej ustawienie jest brane pod uwagę tylko wtedy, gdy parametr SSLProxyCheckPeerName jest określony jednocześnie ”.

Więc dodanie następującego wpisu załatwiło sprawę:

SSLProxyCheckPeerName wyłączone

Więc moja działająca konfiguracja wygląda jak ...

    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

Pavithra Madurangi
źródło
1
Zauważ, że „SSLEngine On” nie dotyczy części proxy dla konfiguracji, ale obsługi tego żądania przez SSL / TLS, nawet jeśli jest zgrupowane z opcjami konfiguracji proxy.
Perseidy
14

Jeśli serwer zaplecza korzysta z nieaktualnego samopodpisanego certyfikatu, potrzebna jest jeszcze jedna opcja (jeśli nie ma dostępu do serwera zaplecza):

SSLProxyCheckPeerExpire off
Milan Kerslager
źródło
To zadziałało w przypadku migracji odwrotnego proxy z apache 2.2 do 2.4
Segolas