Guia Prático para Habilitar HTTPS no Nginx com Certificados Autoassinados

Para implementar o protocolo HTTPS em um abmiente de desenvolvimento ou em redes internas sem a necessidade de uma autoridade certificadora (CA) comercial, podemos utilizar certificados autoassinados. Este processo envolve a geração de uma chave privada e um certificado via OpenSSL, seguido pela configuração do servidor Nginx.

1. Geração do Certificado Autoassinado

O primeiro passo é criar um diretório para armazenar as chaves e definir um arquivo de configuração para o OpenSSL que suporte extensões modernas, como o Subject Alternative Name (SAN).

# Criar diretório de segurança
mkdir -p /etc/nginx/certs
cd /etc/nginx/certs

# Criar arquivo de configuração do certificado
cat > openssl_config.cnf <<eof a="" anos="" c="BR" certificado="" chave="" cn="meuwebserver.local" de="" distinguished_name="dn" dns.1="meuwebserver.local" e="" eof="" gerar="" ip.1="192.168.1.100" l="SaoPaulo" o="Desenvolvimento" openssl="" openssl_config.cnf="" ou="TI" privada="" prompt="no" req="" st="SP" subjectaltname="@alt_names" webserver.crt="" webserver.key="" x509_extensions="v3_req"></eof>

2. Configuração do Servidor Nginx

Abaixo, apresentamos uma configuração otimizada que separa o tráfego HTTP do HTTPS, garantindo o redirecionamento automático (301 Moved Permanently) e definindo parâmetros de segurança para o SSL.

server {
   listen 80;
   listen [::]:80;
   server_name meuwebserver.local;

   # Redirecionamento global para HTTPS
   return 301 https://$host$request_uri;
}

server {
   listen 443 ssl http2;
   listen [::]:443 ssl http2;
   server_name meuwebserver.local;

   # Caminhos dos certificados gerados anteriormente
   ssl_certificate /etc/nginx/certs/webserver.crt;
   ssl_certificate_key /etc/nginx/certs/webserver.key;

   # Otimização e Segurança SSL
   ssl_protocols TLSv1.2 TLSv1.3;
   ssl_prefer_server_ciphers on;
   ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
   ssl_session_cache shared:SSL:10m;
   ssl_session_timeout 1d;

   root /var/www/html;
   index index.html;

   location / {
       try_files $uri $uri/ =404;
   }
}

3. Instalação e Confiança do Certificado no Cliente

Como o certificado foi gerado localmente, os navegadores exibirão um aviso de segurança. Para resolver isso, o arquivo webserver.crt deve ser importado no sistema operacional ou no navegador do usuário.

No Windows

  1. Localize o arquivo webserver.crt e clique duas vezes sobre ele.
  2. Clique em "Instalar Certificado...".
  3. Selecione "Máquina Local" e clique em Avançar.
  4. Escolha a opção "Colocar todos os certificados no seguinte repositório".
  5. Clique em "Procurar" e selecione Autoridades de Certificação Raiz Confiáveis.
  6. Conclua o assistente e reinicie o navegador.

Em Navegadores (Chrome e Edge)

Se preferir gerenciar diretamente pelo navegador:

  1. Acesse as Configurações e procure por Segurança ou Gerenciar Certificados.
  2. Vá até a aba de Autoridades ou Autoridades de Raiz Confiáveis.
  3. Clique em Importar e selecione o arquivo webserver.crt.
  4. Marque a opção para confiar neste certificado para identificação de sites.

Após esses passos, ao acessar o domínio configurado (ex: https://meuwebserver.local), o cadeado de segurança aparecerá como válido, indicando que a conexão está criptografada e o certificado é reconhecido pelo dispositivo.

Tags: nginx openssl HTTPS SSL/TLS WebSecurity

Publicado em 8-1 00:17