Este guia descreve o processo de obtenção e configuração de um certificado SSL gratuito do Let’s Encrypt em um servidor que utiliza o HAProxy, sem precisar do Apache ou Nginx (modo standalone).
1. Instalar o Certbot
No CentOS, RHEL, AlmaLinux ou Rocky Linux (versões 8 ou 9), siga os passos abaixo para instalar o Certbot:
# Instalar o repositório EPEL
dnf install epel-release -y
# Instalar o Certbot
dnf install certbot -y
Nota: Para ambientes que utilizam apenas o Certbot standalone (sem servidor web como Apache ou Nginx), a instalação acima já é suficiente.
2. Parar o HAProxy temporariamente
O Certbot precisa usar a porta 80 para realizar a validação do domínio.
Se o HAProxy estiver em execução e utilizando essa porta, é necessário pará-lo temporariamente:
systemctl stop haproxy
3. Obter o certificado SSL
Execute o comando abaixo para solicitar o certificado SSL para o seu domínio. Substitua seu.dominio.com
pelo domínio real que você quer proteger:
certbot certonly --standalone -d seu.dominio.com
Ao final, os certificados serão gerados nos seguintes caminhos:
- Certificado completo (Full Chain):
/etc/letsencrypt/live/seu.dominio.com/fullchain.pem
- Chave privada:
/etc/letsencrypt/live/seu.dominio.com/privkey.pem
4. Criar o arquivo .pem único para o HAProxy
O HAProxy precisa de um arquivo .pem
que contenha tanto o certificado quanto a chave privada. Crie-o com o comando:
cat /etc/letsencrypt/live/seu.dominio.com/fullchain.pem \
/etc/letsencrypt/live/seu.dominio.com/privkey.pem \
> /etc/haproxy/certs/seu.dominio.com.pem
Em seguida, ajuste as permissões do arquivo para garantir a segurança:
chmod 600 /etc/haproxy/certs/seu.dominio.com.pem
Importante: O diretório /etc/haproxy/certs/
deve existir. Caso não exista, crie-o:
mkdir -p /etc/haproxy/certs/
5. Configurar o HAProxy para usar SSL
Edite o arquivo de configuração do HAProxy, geralmente localizado em /etc/haproxy/haproxy.cfg
, e adicione as seguintes configurações:
frontend myfrontend
mode http
bind <IP-do-HAProxy>:80
bind <IP-do-HAProxy>:443 ssl crt /etc/haproxy/certs/seu.dominio.com.pem
acl letsencrypt-acl path_beg /.well-known/acme-challenge/
use_backend letsencrypt-backend if letsencrypt-acl
redirect scheme https code 301 if !{ ssl_fc }
Explicação dos parâmetros:
- bind: Define os IPs e portas que o HAProxy escutará (HTTP 80 e HTTPS 443).
- ssl crt: Informa o caminho para o arquivo
.pem
contendo o certificado SSL. - acl letsencrypt-acl: Cria uma ACL (Access Control List) para permitir o tráfego necessário para renovação de certificado via Let’s Encrypt.
- use_backend letsencrypt-backend: Redireciona requisições específicas para o backend de validação (configuração opcional).
- redirect: Redireciona requisições HTTP para HTTPS automaticamente.
6. Iniciar novamente o HAProxy
Após realizar as configurações, reinicie o serviço do HAProxy:
systemctl start haproxy
Verifique o status para garantir que ele iniciou corretamente:
systemctl status haproxy
AVISO LEGAL: Os procedimentos descritos neste documento devem ser executados de acordo com o contexto de cada sistema, de forma a evitar impactos negativos à segurança, disponibilidade, integridade e privacidade de dados. A CentralServer se reserva o direito de modificar a qualquer tempo e sem aviso prévio as informações aqui apresentadas a fim de refletir o lançamento de novos serviços, atualizações físicas e operacionais, e evolução do estado-da-arte da tecnologia.