Como fazer a fixação do servidor com o HAProxy através do HTTPS

1

Eu criei anteriormente um loadbalancer para servidores web em HAProxy, mas esse era HTTP, não HTTPS.

Esta é a configuração que eu usei anteriormente.

listen appname 0.0.0.0:80
    mode http
    stats enable
    stats uri /haproxy?stats
    stats realm Strictly\ Private
    stats auth admin:XXXXXXXX
    balance roundrobin
    option http-server-close
    timeout http-keep-alive 3000
    option forwardfor
    cookie SRVNAME insert
    server lamp1 10.128.24.97:80 cookie S1 check
    server lamp2 10.128.24.98:80 cookie S2 check

Eu não sei como reescrever esta configuração para disponibilizar os pedidos para a porta 443 para os servidores por trás do HAProxy. Copiei o anterior e mudei a porta para 443. No entanto, recebo muitos erros. Como posso traduzir a configuração para ser válida para uma conexão HTTPS / SSL?

listen httpsapp 0.0.0.0:443
    mode tcp
    stats enable
    stats uri /haproxy?stats
    stats realm Strictly\ Private
    stats auth admin:XXXXXXXXXXX
    balance roundrobin
    option http-server-close
    timeout http-keep-alive 3000
    option forwardfor
    cookie SRVNAME insert
    server lamp1 10.128.24.97:443 cookie S1 check
    server lamp2 10.128.24.98:443 cookie S2 check

Eu recebo os avisos quando eu reinicio o HAProxy

[WARNING] 007/090716 (2409) : config : cookie will be ignored for proxy 'httpsapp' (needs 'mode http').
[WARNING] 007/090716 (2409) : config : 'option httplog' not usable with proxy 'httpsapp' (needs 'mode http'). Falling back to 'option tcplog'.
[WARNING] 007/090716 (2409) : config : 'stats' statement ignored for proxy 'httpsapp' as it requires HTTP mode.
[WARNING] 007/090716 (2409) : config : 'option forwardfor' ignored for proxy 'httpsapp' as it requires HTTP mode.
[WARNING] 007/090716 (2409) : config : 'option http-server-close' ignored for proxy 'httpsapp' as it requires HTTP mode.
[WARNING] 007/090716 (2409) : config : proxy 'httpsapp' : ignoring cookie for server 'lamp1' as HTTP mode is disabled.
[WARNING] 007/090716 (2409) : config : proxy 'httpsapp' : ignoring cookie for server 'lamp2' as HTTP mode is disabled.
    
por cleanunicorn 08.01.2014 / 15:12

1 resposta

4

Quando você cria um proxy HTTPS (dependendo de qual versão do HAProxy você está usando, e se ele tem suporte SSL compilado), você tem 2 maneiras diferentes de lidar com o tráfego.

Uma é a rota que você tomou com esta configuração - Crie um proxy TCP direto e passe o tráfego diretamente para o servidor backend sem fazer nenhum processamento Layer7.

mode tcp

Quando no modo tcp, você não poderá usar nenhuma opção específica para proxies http - no seu caso, você perderá o endpoint do stats, o processamento do cookie, a inserção do 'X-Forwarded' -Para 'cabeçalho, etc. Os avisos estão no local para apenas informar que esse proxy ainda funcionará, mas provavelmente não funcionará como esperado, já que você usa opções específicas apenas para proxies http.

A outra rota que você pode tomar é terminar o SSL no servidor HAProxy. Nesse cenário, você tem tráfego HTTPS entre seu cliente e o HAProxy e (normalmente) tráfego HTTP não criptografado entre o HAProxy e seus servidores de back-end. Se você fosse fazer a terminação SSL no próprio HAProxy, e não com algo como libra, então você precisaria estar rodando a v1.5 com o suporte a SSL compilado. Sua configuração de proxy resultante poderia ser algo como o seguinte.

listen appname
  bind 0.0.0.0:80
  bind 0.0.0.0:443 ssl crt /path/to/your/cert.pem ciphers TLSv1+HIGH:!SSLv2:RC4+MEDIUM:!aNULL:!eNULL:!3DES:@STRENGTH
  mode http
  stats enable
  stats uri /haproxy?stats
  stats realm Strictly\ Private
  stats auth admin:XXXXXXXX
  balance roundrobin
  option http-server-close
  timeout http-keep-alive 3000
  option forwardfor
  cookie SRVNAME insert
  server lamp1 10.128.24.97:80 cookie S1 check
  server lamp2 10.128.24.98:80 cookie S2 check

Algumas notas sobre isso. Essa diretiva de escuta está agregando os proxies HTTP e HTTPS no mesmo. Pode ser facilmente dividido de volta, mas a menos que seja necessário, eu gosto de manter as coisas um pouco mais limpas assim. Além disso, as opções de "cifras" são configuráveis de acordo com o seu gosto ou aplicação - não sou especialista em SSL, mas essas opções são o que funcionam para mim, então imaginei incluí-las.

    
por 07.02.2014 / 12:35