Como configurar um certificado SSL CA 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 sua pilha de sites/aplicativos criptografe e descriptografe o tráfego entre seu “servidor de entrada da web” ou gateway de acesso de aplicativos. aplicações servidor e cliente.
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.
Crie um arquivo de certificado SSL formatado em PEM
Antes de configurar seu certificado 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 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 com o nome de usuário e endereço IP do servidor remoto, respectivamente):
scp example.com.pem [email :/home/sysadmin/
Em seguida, crie um diretório onde o arquivo .pem
do certificado será armazenado usando o comando mkdir e copie o arquivo nele:
sudo mkdir -p /etc/ssl/example.com/
sudo cp example.com.pem /etc/ssl/example.com/
Em seguida, abra seu arquivo de configuração HAProxy e configure o certificado na seção do ouvinte frontend, usando os parâmetros ssl e crt: o primeiro habilita a terminação SSL e o último especifica a localização 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
Configure o HAProxy para redirecionar HTTP para HTTPS
Para garantir que seu site seja acessível apenas via HTTPS, você precisa ativar o HAProxy para redirecionar todo o tráfego HTTP para HTTPS caso um usuário tente acesse-o 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 frontend agora deve se parecer com esta 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, recarregue o serviço haproxy para capturar as alterações 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 certifique-se de que o certificado esteja carregando corretamente e que o navegador indique 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.