Implante um certificado SSL em um servidor Nginx no Windows para ativar o HTTPS, proteger dados em trânsito e evitar avisos de segurança do navegador.
Requisitos
Antes de começar, verifique se os seguintes requisitos foram atendidos:
Status do certificado: Tenha um certificado SSL emitido por uma autoridade certificadora (CA) confiável. Se o certificado estiver prestes a expirar ou já tiver expirado, renove-o antes de prosseguir.
-
Correspondência de nome de domínio: Confirme se o certificado abrange todos os nomes de domínio que você deseja proteger. Para adicionar ou alterar um nome de domínio, compre um certificado pago ou adicione e substitua nomes de domínio.
-
Nome de domínio exato: Um certificado de nome de domínio exato aplica-se apenas ao domínio especificado.
Um certificado para
example.comaplica-se somente aexample.com.Um certificado para
www.example.comaplica-se somente awww.example.com.
-
Nome de domínio curinga: Um certificado de nome de domínio curinga aplica-se apenas a subdomínios de primeiro nível.
Um certificado para
*.example.comabrange subdomínios de primeiro nível, comowww.example.comea.example.com.Um certificado para
*.example.comnão se aplica ao domínio raizexample.comnem a subdomínios de vários níveis, comoa.b.example.com.
NotaPara corresponder a um subdomínio de vários níveis, o campo Bound Domains deve incluir o nome de domínio específico (por exemplo,
a.b.example.com) ou um nome de domínio curinga correspondente (por exemplo,*.b.example.com). -
Permissões do servidor: Utilize a conta
Administratorou uma conta com privilégios de administrador.Resolução DNS: O nome de domínio resolve para o endereço IP público do servidor.
-
Pré-requisitos: Este tópico utiliza o Windows Server 2025 e o Nginx 1.28.0 como exemplos. O diretório de instalação do Nginx usado no exemplo é
D:\nginx-1.28.0.NotaAs etapas podem variar conforme a versão do sistema operacional ou o software do servidor web.
Procedimento
Etapa 1: Preparar o certificado SSL
Acesse a página do SSL Certificates Service. Na coluna Actions do seu certificado, clique em More para abrir a página de detalhes do certificado. Na aba Download, baixe o certificado para o Server Type Nginx.
-
Descompacte o pacote de certificado baixado.
Se o pacote contiver tanto um arquivo de certificado (.pem) quanto um arquivo de chave privada (.key), armazene ambos com segurança. Eles são necessários para a implantação.
-
Caso o pacote contenha apenas o arquivo de certificado (.pem) e nenhum arquivo de chave privada (.key), implante o certificado juntamente com o arquivo de chave privada salvo localmente.
NotaSe você gerou um arquivo de solicitação de assinatura de certificado (CSR) usando ferramentas como OpenSSL ou Keytool durante a solicitação do certificado, o arquivo de chave privada fica armazenado apenas na sua máquina local, e o pacote baixado não o contém. Se a chave privada for perdida, o certificado torna-se inutilizável. Nesse caso, compre um certificado pago e gere um novo CSR e uma nova chave privada.
-
Faça upload dos arquivos extraídos de certificado e chave privada para o servidor e armazene-os em um diretório seguro. O caminho de exemplo utilizado neste tópico é
D:\cert.NotaAs etapas a seguir usam uma instância do Alibaba Cloud ECS como exemplo. Para outros tipos de servidor, consulte a documentação do fornecedor.
Acesse ECS console - Instances. No canto superior esquerdo, selecione a região e o grupo de recursos do recurso de destino.
Abra a página de detalhes da instância. Clique em Connect e selecione Workbench. Siga as instruções na tela para fazer logon no servidor.
Clique no menu Start no canto inferior esquerdo da área de trabalho do servidor e localize e abra This PC, Computer ou File Explorer.
-
Em Redirected drives and folders, clique duas vezes em workbench on ***. Arraste os arquivos de certificado da sua máquina local para este diretório, clique com o botão direito e selecione Refresh para atualizar a pasta.

-
Copie os arquivos para o diretório
D:\cert.ImportanteO Workbench limpa os arquivos de Redirected drives and folders quando você reconecta ou sai da instância. Utilize este diretório apenas para transferência — não armazene arquivos aqui permanentemente.
Etapa 2: Configurar o sistema e a rede
-
Abra a porta 443 no grupo de segurança.
ImportanteSe o servidor estiver implantado em uma plataforma de nuvem, garanta que o grupo de segurança permita tráfego de entrada na porta TCP 443. Caso contrário, o serviço não ficará acessível pela internet. As operações abaixo utilizam uma instância do Alibaba Cloud ECS como exemplo. Para outras plataformas de nuvem, consulte a documentação oficial correspondente.
Acesse a página ECS Instances, selecione a região onde sua instância ECS de destino está localizada e clique no nome da instância para acessar a página de detalhes.
Clique em e confirme se existe uma regra com Action definida como Allow, Protocol Type definido como TCP, Port Range definido como HTTPS(443) e Authorization Object definido como Anywhere (0.0.0.0/0).
Se essa regra não existir, adicione-a ao grupo de segurança de destino. Para mais informações, consulte Add a security group rule.
-
Abra a porta 443 no firewall do servidor.
Faça logon no servidor Windows, clique no menu Start e abra o Control Panel.
Acesse .
Se o firewall estiver desativado, conforme mostrado na figura a seguir, nenhuma ação adicional será necessária.

-
Caso o firewall esteja ativado, siga estas etapas para permitir o tráfego HTTPS.
No painel de navegação à esquerda, clique em e verifique se existe uma regra de entrada na qual Protocol seja TCP, Local Port seja 443 e Action seja Block.
Se tal regra existir, clique com o botão direito nela, selecione Properties e, na aba General, altere a ação para Allow the connection. Em seguida, clique em Apply.
Etapa 3: Implantar o certificado no Nginx
-
Abra o arquivo de configuração do Nginx (por exemplo,
D:\nginx-1.28.0\conf\nginx.conf) e configure o certificado SSL e a chave privada.-
Adicione um bloco de servidor que escute na porta 443.
Duplique o bloco de servidor da porta 80, altere a diretiva listen para
listen 443 ssle adicione as diretivas SSL (ssl_certificateessl_certificate_key).# Original server block listening on port 80 server { listen 80; server_name yourdomain.com www.yourdomain.com; # Other configurations location / { proxy_pass http://127.0.0.1:8000; } } # Duplicate the existing server block for port 80 and add it as a new server block. server { # Change 'listen 80' to 'listen 443 ssl' listen 443 ssl; # Keep the original server_name. You can add more domain names supported by the certificate. server_name yourdomain.com www.yourdomain.com; # ======================= Certificate Configuration Start ======================= # Specify the certificate file (intermediate certificates can be concatenated into this .pem file). Replace the following path with the absolute path to your certificate file. ssl_certificate D:\\cert\\example.com.pem; # Specify the private key file. Replace the following path with the absolute path to your private key file. ssl_certificate_key D:\\cert\\example.com.key; # Configure the SSL session cache to improve performance. ssl_session_cache shared:SSL:1m; # Set the SSL session timeout. ssl_session_timeout 5m; # Customize the TLS protocols and cipher suites (This is an example. Adjust as needed.) ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # Specify the allowed TLS protocol versions. Higher TLS versions provide better security but may have lower browser compatibility. ssl_protocols TLSv1.2 TLSv1.3; # Prioritize the server's cipher suites. ssl_prefer_server_ciphers on; # ======================= Certificate Configuration End ======================= # Other configurations } -
Opcional: Redirecione solicitações HTTP automaticamente para HTTPS. Adicione a diretiva
rewriteao blocoserverexistente que escuta na porta 80.server { listen 80; # Enter the domain name bound to the certificate. server_name <YOURDOMAIN>; # Redirect all HTTP requests to HTTPS with a 301 status code. return 301 https://$host$request_uri; } -
Valide a configuração. Se a saída exibir
syntax is oketest is successful, a configuração está correta. Caso contrário, corrija os erros relatados e teste novamente..\nginx.exe -t
-
-
Recarregue o serviço Nginx.
Abra o Prompt de Comando, navegue até o diretório de instalação do Nginx e execute:
.\nginx.exe -s reload
Etapa 4: Verificar a implantação
Acesse seu nome de domínio via HTTPS. Exemplo:
https://example.com. Substituaexample.compelo seu nome de domínio real.-
Se um ícone de cadeado aparecer na barra de endereços do navegador, o certificado foi implantado com sucesso. Caso ocorra um erro de acesso ou o ícone de cadeado não apareça, limpe o cache do navegador ou tente novamente no modo anônimo ou privado.

A partir do Chrome 117, o ícone
na barra de endereços foi substituído pelo novo ícone
. Clique neste ícone para visualizar as informações do cadeado de segurança.
Se os problemas persistirem, consulte a seção FAQ para solução de problemas.
Implantação em produção
Ao implantar uma aplicação em ambiente de produção, siga estas práticas recomendadas para melhorar a segurança, a estabilidade e a manutenibilidade:
-
Execute a aplicação como um usuário sem privilégios de administrador:
Crie um usuário de sistema dedicado e com baixos privilégios para a aplicação. Não execute a aplicação utilizando uma conta com permissões administrativas.
NotaRecomendamos o uso de uma configuração SSL no nível de gateway. Isso envolve implantar o certificado em um proxy reverso, como uma instância SLB ou Nginx.
-
Externalize o gerenciamento de credenciais:
Não codifique informações sensíveis, como senhas, diretamente no código ou nos arquivos de configuração. Utilize variáveis de ambiente, um cofre ou um Key Management Service fornecido pelo seu provedor de nuvem para injetar credenciais.
-
Force o redirecionamento de HTTP para HTTPS:
Garanta que todo o tráfego de acesso ao seu site via HTTP seja redirecionado automaticamente para HTTPS. Isso ajuda a prevenir ataques man-in-the-middle (MITM).
-
Configure protocolos TLS modernos:
Na configuração do servidor, desative protocolos obsoletos e inseguros, como SSLv3, TLS 1.0 e TLS 1.1. Ative apenas TLS 1.2 e TLS 1.3.
-
Monitore certificados e automatize a renovação:
Após a implantação do certificado, recomendamos ativar o monitoramento de nome de domínio. O Alibaba Cloud verifica automaticamente o período de validade do certificado e envia lembretes antes da expiração. Isso facilita a renovação oportuna e evita interrupções no serviço. Para mais informações, consulte Purchase and enable public domain name monitoring.
FAQ
Certificado não funciona ou HTTPS inacessível
As causas comuns incluem:
A porta 443 não está aberta no grupo de segurança ou no firewall. Abra-a conforme descrito em Configurar o sistema e a rede.
Os Bound Domains do certificado não abrangem o domínio que você está acessando. Verifique o pré-requisito de Correspondência de nome de domínio.
O Nginx não foi recarregado após a alteração da configuração. Recarregue o serviço Nginx.
Os arquivos de certificado não foram substituídos corretamente ou a configuração do Nginx aponta para o caminho errado. Verifique se tanto a configuração quanto os arquivos de certificado estão atualizados.
O nome de domínio está integrado a serviços de nuvem como CDN, SLB ou WAF, mas o certificado não foi instalado no serviço correspondente. Para mais informações, consulte Certificate deployment location when traffic passes through multiple cloud services.
O nome de domínio resolve para múltiplos servidores, mas o certificado foi instalado apenas em alguns deles. Instale o certificado em cada servidor.
Para solucionar outros problemas, consulte Troubleshoot certificate deployment issues based on browser errors e SSL certificate deployment troubleshooting guide.
Como atualizar um certificado SSL no Nginx?
Faça backup dos arquivos .pem e .key existentes no servidor. Baixe o novo certificado no console do Certificate Management Service e faça upload dele no mesmo caminho, com os mesmos nomes de arquivo, substituindo os antigos. Recarregue o Nginx para aplicar a alteração.
Como desativar TLSv1.0 e TLSv1.1 no Nginx?
No bloco de servidor Nginx que escuta na porta 443, defina ssl_protocols para incluir apenas TLSv1.2 e TLSv1.3: ssl_protocols TLSv1.2 TLSv1.3;. Isso desativa os protocolos inseguros TLSv1.0 e TLSv1.1. Após atualizar a configuração, execute .\nginx.exe -s reload para aplicar as alterações.
Após executar nginx -s reload, o Nginx falha ao iniciar ou o erro bind() to 0.0.0.0:443 failed aparece nos logs.
Trata-se de um conflito de porta. Execute netstat -ano | findstr ":443" para verificar se a porta 443 está em uso e pare o serviço que a está ocupando.
Solução de problemas para ícone de cadeado ausente ou avisos de "conteúdo misto"
Isso ocorre quando a página carrega recursos como imagens, CSS ou JavaScript via HTTP. Inspecione o código-fonte da página e altere todos os links http:// para https://, ou utilize caminhos relativos como /images/logo.png.