HAProxy para terminar SSL también envía SSL al servidor de fondo


14

Me gustaría terminar SSL en HAProxy, hacer alguna manipulación en el encabezado, reescribir URL y volver a cifrar el tráfico y enviarlo a los servidores de back-end como SSL.

Parece que no puedo encontrar una manera de hacer esto. Puedo hacer la terminación SSL normal y enviar solicitudes HTTP simples al backend. Pero necesito enviar SSL al backend.

Me gustaría tener las siguientes características:

  • Extraiga los encabezados x-forwards-for, para obtener la IP real del cliente detrás del proxy.
  • Implemente la adherencia de la sesión utilizando cookies.
  • Haz una reescritura de URL.
  • Envíe tráfico SSL al backend utilizando la adherencia de sesión basada en cookies.

A menos que termine SSL en el extremo de haproxy, no puedo realizar la reescritura de URL.

Cualquier ayuda de la buena gente aquí sería muy apreciada.


1
¿Puedes publicar tu configuración actual y decirnos qué no funciona?
GregL

Respuestas:


30

No hay nada especial que hacer en haproxy.cfg. Simplemente configure cualquier reescritura de URL y manipulaciones de encabezado que desee dentro de su interfaz HAProxy y luego redirija el tráfico a su backend SSL. Aquí hay un ejemplo rápido:

frontend app1_ssl
    bind *:443 ssl crt /etc/haproxy/certs.d/example.com.crt crt /etc/haproxy/certs.d/ no-sslv3

    option http-server-close
    option forwardfor
    reqadd X-Forwarded-Proto:\ https
    reqadd X-Forwarded-Port:\ 443

    # set HTTP Strict Transport Security (HTST) header
    rspadd  Strict-Transport-Security:\ max-age=15768000

    # some ACLs and URL rewrites...

    default_backend             backend_app1_ssl


backend backend_app1_ssl
    server mybackendserver 127.0.0.1:4433 ssl verify none

1
¡Increíble! Déjame probar eso. No pude encontrar esa cosa de "servidor ... ssl" en ningún lado.
oazabir el

Muchas gracias por su ayuda. Pude hacerlo funcionar. Sin embargo, no pude hacer que SSL funcionara. ¿Podrías ayudar por favor? La pregunta está aquí: serverfault.com/questions/738397/…
oazabir el

Genial, me alegro de haber podido ayudar. No olvide aceptar mi respuesta para que otros puedan ver de inmediato que fue útil ;-)
Tubeless

¿El cifrado realmente funciona al dar SSL no verificar ninguno? De la documentación de haproxy, "Si se establece en 'none', el certificado del servidor no se verifica. En el otro caso, el certificado provisto por el servidor se verifica usando CAs de 'ca-file'". ¿Alguien puede aclarar esto?
mjm

Con el ssl verify nonetráfico entre HAProxy y el servidor de fondo todavía está encriptado, pero no se verifica la validez del certificado SSL de fondo.
Tubeless
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.