HAProxy para finalizar SSL também envia SSL para o servidor back-end


14

Gostaria de encerrar o SSL no HAProxy, fazer alguma manipulação no cabeçalho, reescrever URL e criptografar novamente o tráfego e enviar aos servidores de back-end como SSL?

Não consigo encontrar uma maneira de fazer isso. Posso concluir a terminação SSL regular e enviar solicitações HTTP simples para o back-end. Mas preciso enviar SSL para back-end.

Eu gostaria de ter os seguintes recursos:

  • Extraia os cabeçalhos x-forwarded para obter o IP do cliente real atrás do proxy.
  • Implemente a aderência da sessão usando o cookie.
  • Faça alguma reescrita de URL.
  • Envie tráfego SSL para back-end usando a stickieness de sessão baseada em cookie.

A menos que eu encerre o SSL no final do haproxy, não consigo concluir a reescrita de URL.

Qualquer ajuda das pessoas boas daqui seria muito apreciada.


1
Você pode postar sua configuração atual e nos dizer o que não está funcionando?
GregL

Respostas:


30

Não há nada de especial para fazer no haproxy.cfg. Você simplesmente configura as reescritas de URL e manipulações de cabeçalho que deseja no seu front end HAProxy e redireciona o tráfego para o back-end SSL. Aqui está um exemplo 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
Impressionante! Deixe-me tentar isso. Não consegui encontrar a coisa "servidor .... ssl" em lugar nenhum.
oazabir

Muito obrigado pela sua ajuda. Consegui fazê-lo funcionar. No entanto, não foi possível obter o SSL aderente ao trabalho. Você poderia ajudar por favor? A questão está aqui: serverfault.com/questions/738397/…
oazabir 23/11/2015

Ótimo, estou feliz por poder ajudar. Não se esqueça de aceitar a minha resposta para que outros possam ver imediatamente que era útil ;-)
Tubeless

A criptografia realmente funciona fornecendo ssl para verificar nenhuma? Na documentação haproxy, "Se definido como 'none', o certificado do servidor não será verificado. No outro caso, o certificado fornecido pelo servidor é verificado usando CAs de 'ca-file'". Alguém pode esclarecer isso?
Mjm

O ssl verify nonetráfego entre o HAProxy e o servidor de back-end ainda é criptografado, mas a validade do certificado SSL do back-end não é verificada.
Tubeless
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.