Uso de Https entre Apache Loadbalancer y backends

30

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

usuario3240383
fuente
Interesante. Solía ​​hacer esto con apache2.2 y nunca tuve que hacerlo SSLProxyVerify none y nunca tuve problemas con los certificados de autofirma. ¿Seguro que el servidor de fondo está bien?
ETL
@ETL No sé si "SSLProxyVerify none" es obligatorio o no, lo acabo de agregar con la esperanza de que pueda solucionar el problema. Al llamar a "wget ​​https: // [backend1] /test/test.jsp --no-check-certificate" en el servidor de equilibrador de carga, se descarga el archivo esperado. ng
user3240383

Respuestas:

16

El problema resultó ser que el nombre común de los certificados no coincidía con el nombre del servidor.

Antes de Apache 2.4.5, esta verificación se puede deshabilitar usando, SSLProxyCheckPeerCN offpero en versiones superiores (como 2.4.7) SSLProxyCheckPeerName offtambié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

Puede verificar la versión de Apache que tiene con:

apachectrl -V
ETL
fuente
Hola, tengo exactamente el mismo problema, excepto que la configuración es un poco diferente: la <Location /margin-tool> ProxyPass https://xxxx.thoughtworks.net:8443/margin-tool ProxyPassReverse https://xxxx.thoughtworks.net:8443/margin-tool </Location>misma configuración no funciona. ¿Algunas ideas?
user157735
0

Agregar a continuación resolvió el problema

SSLProxyProtocol +TLSv1
Murryy
fuente
55
Dar muestras de configuración místicas no es una respuesta de buena calidad. Copiar cadenas de Internet no es lo que hace un administrador de sistemas profesional. Explícalo, qué hace y por qué.
Peter dice reinstalar a Mónica el
me encontré con esto con java12 - entre otras cosas, esto resolvió mi problema ...
womd
-2

uso apache 2.4.9 y agrego a httpd-ssl.conf el siguiente código

SSLProxyProtocol + SSLv3 + TLSv1 + TLSv1.1

he resuelto los problemas

nutria
fuente
3
¿Has oído hablar de POODLE ? SSLv3 debería estar deshabilitado.
Sven
2
SSLv3 es vulnerable
información privilegiada el