Protegendo o Nginx com Let’s Encrypt no CentOS 7: Um Guia Completo
O Nginx é reconhecido como um servidor web de alto desempenho, capaz de gerenciar um volume significativo de tráfego. Para reforçar a segurança do seu servidor Nginx, a implementação de certificados SSL/TLS é uma prática fundamental. O Let’s Encrypt surge como uma autoridade certificadora (CA) gratuita e automatizada, oferecendo certificados SSL/TLS sem custo. Este guia detalha o processo de proteção do Nginx utilizando o Let’s Encrypt no sistema CentOS 7.
Requisitos Iniciais
Antes de iniciar, certifique-se de ter:
- Um servidor CentOS 7 com o Nginx já instalado.
- Um nome de domínio registrado e configurado para apontar para o seu servidor.
- Acesso root ou permissões sudo.
Instalação do Certbot
O Certbot é uma ferramenta projetada para simplificar o gerenciamento de certificados SSL/TLS do Let’s Encrypt. A instalação é o primeiro passo:
yum install certbot python2-certbot-nginx
Obtenção do Certificado SSL/TLS
Após a instalação do Certbot, você estará apto a solicitar um certificado SSL/TLS para o seu domínio:
certbot --nginx -d your.domain.com
Configuração do Nginx
O próximo passo envolve a configuração do Nginx para utilizar o certificado SSL/TLS:
- Localize e abra o arquivo de configuração do Nginx em
/etc/nginx/conf.d/your_domain.conf
: - Insira as seguintes configurações:
nano /etc/nginx/conf.d/your_domain.conf
server { listen 443 ssl; server_name your.domain.com; ssl_certificate /etc/letsencrypt/live/your.domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your.domain.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers off; ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256"; location / { proxy_pass http://localhost:8080; } } server { listen 80; server_name your.domain.com; return 301 https://your.domain.com; }
- Salve e feche o arquivo.
Reinicialização do Nginx
Para que as alterações tenham efeito, o Nginx precisa ser reiniciado:
systemctl reload nginx
Considerações Finais
Ao seguir estas instruções, você configurou com sucesso a proteção do seu servidor Nginx com um certificado SSL/TLS fornecido pelo Let’s Encrypt. Essa medida criptografa a comunicação entre o seu servidor e os navegadores dos usuários, salvaguardando informações e privacidade. É crucial manter o seu certificado atualizado, realizando renovações regulares para garantir a sua validade. Um servidor Nginx seguro é um componente essencial para manter a confiança dos usuários e defender o seu site contra ameaças maliciosas.
Perguntas Frequentes (FAQs)
O que é SSL/TLS? | SSL (Secure Sockets Layer) e TLS (Transport Layer Security) são protocolos que criptografam as comunicações na web para proteger os dados transmitidos de interceptação ou adulteração. |
O que é Let’s Encrypt? | Let’s Encrypt é uma autoridade de certificação que oferece certificados SSL/TLS gratuitos para websites, automatizando o processo de obtenção, instalação e renovação desses certificados. |
Como posso renovar meu certificado SSL/TLS? | A renovação do certificado SSL/TLS pode ser realizada com o seguinte comando: |
certbot renew
Como corrijo o erro “ssl_certificate_key file not found”? | Este erro costuma indicar que a chave privada não está localizada no caminho especificado. Verifique a exatidão do caminho no arquivo de configuração do Nginx. |
Como redirecionar tráfego HTTP para HTTPS? | Para redirecionar tráfego HTTP para HTTPS, adicione a seguinte linha no arquivo de configuração do Nginx: |
return 301 https://your.domain.com$request_uri;
Como habilitar o HSTS no Nginx? | HSTS (HTTP Strict Transport Security) força o navegador a conectar-se ao seu site exclusivamente via HTTPS. Habilite-o adicionando esta linha à configuração do Nginx: |
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
Como proteger o Nginx contra ataques de força bruta? | Você pode mitigar ataques de força bruta limitando o número de tentativas de login incorretas por IP. Inclua este bloco em sua configuração do Nginx: |
limit_req_zone $binary_remote_addr zone=req_limit_zone:10m rate=3r/s; server { include other_configs; location / { limit_req zone=req_limit_zone burst=5; } }
Como adicionar múltiplos certificados SSL/TLS ao Nginx? | Para utilizar múltiplos certificados SSL/TLS, empregue a diretiva ssl_certificate dentro do bloco server: |
server { listen 443 ssl; ssl_certificate /path/to/cert1.pem; ssl_certificate_key /path/to/key1.pem; ssl_certificate /path/to/cert2.pem; ssl_certificate_key /path/to/key2.pem; }
Como diagnosticar problemas de conexão SSL/TLS no Nginx? | Utilize estas ferramentas para diagnosticar problemas: |
openssl s_client -connect your.domain.com:443
: Exibe detalhes sobre a conexão SSL/TLS.nmap -p 443 your.domain.com
: Verifica se a porta 443 (HTTPS) está aberta.Wireshark
: Captura e analisa o tráfego de rede para detectar erros de conexão.
Como remover um certificado SSL/TLS do Nginx? | Remova o certificado SSL/TLS do arquivo de configuração e do diretório live : |
rm /etc/nginx/conf.d/your_domain.conf
rm -rf /etc/letsencrypt/live/your.domain.com