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
- Localize o arquivo
webserver.crte clique duas vezes sobre ele. - Clique em "Instalar Certificado...".
- Selecione "Máquina Local" e clique em Avançar.
- Escolha a opção "Colocar todos os certificados no seguinte repositório".
- Clique em "Procurar" e selecione Autoridades de Certificação Raiz Confiáveis.
- Conclua o assistente e reinicie o navegador.
Em Navegadores (Chrome e Edge)
Se preferir gerenciar diretamente pelo navegador:
- Acesse as Configurações e procure por Segurança ou Gerenciar Certificados.
- Vá até a aba de Autoridades ou Autoridades de Raiz Confiáveis.
- Clique em Importar e selecione o arquivo
webserver.crt. - 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.