Como configurar um certificado CA SSL no HAProxy


O HAProxy é um proxy reverso amplamente utilizado, confiável e de alto desempenho, que oferece alta disponibilidade e recursos de balanceamento de carga para aplicativos TCP e HTTP. Por padrão, ele é compilado com OpenSSL, suportando assim a terminação SSL, permitindo que seu site/pilha de aplicativos criptografe e descriptografe o tráfego entre seu \servidor de entrada na web ou servidor de gateway de acesso a aplicativos e aplicativos clientes.

Este guia mostra como configurar um certificado CA SSL no HAPorxy. Este guia pressupõe que você já recebeu seu certificado da CA e está pronto para instalá-lo e configurá-lo em um servidor HAProxy.

Os arquivos esperados são:

  • O próprio certificado.
  • Os certificados intermediários também chamados de pacotes ou cadeias e.
  • A CA raiz, se disponível, e.
  • A chave privada.

Criar um arquivo de certificado SSL formatado em PEM

Antes de configurar seu certificado de CA no HAProxy, você precisa entender que o HAProxy requer um único arquivo .pem que deve conter o conteúdo de todos os arquivos acima, concatenados na seguinte ordem:

  • A chave privada que termina com .key, (pode vir no início ou no final do arquivo).
  • Seguido pelo certificado SSL (geralmente termina com .crt).
  • Em seguida, o CA-Bundle (geralmente termina com .ca-bundle) e
  • A CA raiz, se disponível.

Para criar o arquivo .pem, vá para o diretório que contém seus arquivos de certificado, por exemplo, ~/Downloads, e execute o comando cat assim (substitua os nomes dos arquivos de acordo):

$ cat example.com.key STAR_example_com/STAR_example_com.crt STAR_example_com/STAR_example_com.ca-bundle > example.com.pem

Configurar o certificado SSL PEM no HAProxy

Em seguida, carregue o arquivo de certificado .pem recém-criado para o servidor HAProxy usando o comando scp conforme mostrado (substitua sysadmin e 192.168.10.24 pelo nome de usuário do servidor remoto e endereço IP, respectivamente):

$ scp example.com.pem  [email protected]:/home/sysadmin/

Em seguida, crie um diretório onde o arquivo .pem do certificado será armazenado usando o comando mkdir e copie o arquivo para ele:

$ sudo mkdir -p /etc/ssl/example.com/
$ sudo cp example.com.pem /etc/ssl/example.com/

Em seguida, abra o arquivo de configuração do HAProxy e configure o certificado na seção do ouvinte de frontend, usando os parâmetros ssl e crt: o primeiro habilita a terminação SSL e o último especifica o local do arquivo de certificado.

frontend http_frontend
      mode http
      bind *:80
      bind *:443 ssl crt  /etc/ssl/example.com/example.com.pem alpn h2,http/1.1
     redirect scheme https code 301 if !{ ssl_fc }
      default_backend http_servers

Certas versões de SSL/TLS não são recomendadas para uso agora devido a vulnerabilidades que foram descobertas nelas. Para limitar a versão suportada do SSL, você pode adicionar o parâmetro ssl-min-ver assim:

bind *:443 ssl crt  /etc/ssl/example.com/example.com.pem alpn h2,http/1.1   ssl-min-ver TLSv1.2

Configurar HAProxy para redirecionar HTTP para HTTPS

Para garantir que seu site seja acessível apenas via HTTPS, você precisa habilitar o HAProxy para redirecionar todo o tráfego HTTP para HTTPS caso um usuário tente acessá-lo por HTTP (porta 80).

Adicione a seguinte linha à configuração acima:

redirect scheme https code 301 if !{ ssl_fc }
OR
http-request redirect scheme https unless { ssl_fc }

Sua seção de front-end agora deve se parecer com a desta configuração de exemplo:

frontend http_frontend
      mode http
      bind *:80
      bind *:443 ssl crt  /etc/ssl/example.com/example.com.pem alpn h2,http/1.1  ssl-min-ver TLSv1.2
      redirect scheme https code 301 if !{ ssl_fc }
      default_backend   http_servers

backend http_servers
      mode http
      balance roundrobin
      option httpchk HEAD /
      http-response set-header X-Frame-Options SAMEORIGIN
      http-response set-header X-XSS-Protection 1;mode=block
      http-response set-header X-Content-Type-Options nosniff
      default-server check maxconn 5000
      server http_server1 10.2.1.55:80

Salve o arquivo de configuração e feche-o.

Em seguida, verifique se sua sintaxe está correta usando o seguinte comando:

$ sudo haproxy -f /etc/haproxy/haproxy.cfg -c

Se o arquivo de configuração for válido, vá em frente e recarregue o serviço haproxy para pegar as mudanças recentes na configuração, usando o comando systemctl:

$ sudo systemctl reload haproxy

Por último, mas não menos importante, teste toda a configuração acessando seu site a partir de um navegador da Web e verifique se o certificado está carregando bem e o navegador indica que a \Conexão é segura!

Isso é tudo! Esperamos que este guia tenha ajudado você a configurar um certificado SSL no software balanceador de carga HAProxy. Se você encontrar algum erro, informe-nos por meio do formulário de feedback abaixo. Teremos prazer em ajudá-lo.