Tengo un servidor que actúa como interfaz para un servidor de correo cPanel en una red. El proxy Apache en el servidor front-end funcionó durante 152 días sin fallas y, de repente, recibo errores 500/502 cuando lo uso para acceder a los clientes de correo web del servidor de correo.
El servidor front-end utiliza un certificado SSL firmado, el servidor cPanel utiliza un certificado autofirmado. Aquí está el resultado del registro de errores del servidor front-end cuando comenzó a ocurrir:
[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
El servidor front-end es una instancia EC2 que ejecuta Apache/2.4.6 (Amazon)
My VirtualHost. La configuración para el proxy en este servidor es la siguiente:
< 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>
Hasta donde puedo pensar, nada ha cambiado en el servidor front-end, no hice una actualización ni nada, una vez que noté este problema y jugueteé sin éxito, intenté reiniciar ambos servidores pero no hizo nada para solucionarlo.
¿Alguna sugerencia?
Respuesta1
Encontré el mismo problema con la versión del servidor: Apache/2.4.6
Según la documentación en [1], "En 2.4.5 y posteriores, SSLProxyCheckPeerCN ha sido reemplazado por SSLProxyCheckPeerName, y su configuración solo se tiene en cuenta cuando se especifica SSLProxyCheckPeerName desactivado al mismo tiempo.".
Entonces agregar la siguiente entrada funcionó:
SSLProxyCheckPeerName desactivado
Entonces mi configuración de trabajo se ve así...
ProxyRequests Off
SSLEngine On
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLCertificateFile /x/x/keys/server.crt
SSLCertificateKeyFile /x/x/keys/server.key
Respuesta2
Si el servidor backend utiliza un certificado autofirmado desactualizado, se necesita una opción más (si no hay acceso al servidor backend):
SSLProxyCheckPeerExpire off
Respuesta3
También recibo el mismo error, pero en mi caso, la respuesta aceptada aquí resolvió este error:https://stackoverflow.com/questions/47718508/apache-proxypass-https-and-remote-server-with-sni
yo añadí
ProxyAddHeaders off
ProxyPreserveHost off
Respuesta4
No olvide reiniciar el servidor back-end después de renovar sus certificados, en caso de que no detecte si los archivos de los certificados se han actualizado. Por lo tanto, no necesitará establecer la SSLProxyCheckPeerExpire off
directiva.