Estoy usando un servidor apache (2.4) configurado como equilibrador de carga frente a 2 servidores apache. Funciona bien cuando uso conexiones http entre loadbalancer y backends, sin embargo, usar https no funciona. La configuración del equilibrador de carga:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
<Proxy balancer://testcluster>
BalancerMember https://[Backend1]:443/test
BalancerMember https://[Backend2]:443/test
</Proxy>
ProxyPass /test balancer://testcluster
Los backends solo tienen certificados autofirmados por ahora, por lo que la verificación del certificado está deshabilitada.
El registro de errores en el equilibrador de carga contiene lo siguiente:
[proxy:error] [pid 31202:tid 140325875570432] (502)Unknown error 502: [client ...] AH01084: pass request body failed to [Backend1]:443 ([Backend1])
[proxy:error] [pid 31202:tid 140325875570432] [client ...] AH00898: Error during SSL Handshake with remote server returned by /test/test.jsp
[proxy_http:error] [pid 31202:tid 140325875570432] [client ...] AH01097: pass request body failed to [Backend1]:443 ([Backend1]) from [...] ()
La página de error en el navegador contiene:
Proxy Error
The proxy server could not handle the request GET /test/test.jsp.
Reason: Error during SSL Handshake with remote server
Como ya dije anteriormente, cambiar la configuración al protocolo http y el puerto 80 funciona. También funcionan las conexiones https entre el cliente y el equilibrador de carga, por lo que el módulo ssl del equilibrador de carga parece estar configurado correctamente. Conectarse directamente al backend a través de https tampoco genera ningún error.
Gracias de antemano por tu tiempo
Editar: lo descubrí, el problema es que el nombre común de mis certificados no coincide con el nombre del servidor. Pensé que SSLProxyVerify none causaría que esta discrepancia sea ignorada, pero no lo hace. Antes de apache 2.4.5, esta verificación se puede desactivar con SSLProxyCheckPeerCN desactivado, pero en versiones superiores (estoy usando 2.4.7) SSLProxyCheckPeerName desactivado también debe especificarse.
Documentación de Apache para sslproxycheckpeername
La configuración de trabajo se ve así:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
<Proxy balancer://testcluster>
BalancerMember https://[backend1]:443/test
BalancerMember https://[backend1]:443/test
</Proxy>
ProxyPass /test balancer://testcluster
Desafortunadamente, no puedo responder mi propia pregunta por falta de reputación, así que edité mi pregunta, espero que esto ayude a cualquiera que tenga un problema similar