Neste tutorial, você aprenderá como instalar um certificado SSL no Node.js usando o módulo integrado https. Diferente de um servidor web como Apache ou Nginx, o Node.js carrega seu certificado, chave privada e cadeia de CA diretamente em JavaScript, portanto a “instalação” acontece dentro do código da sua aplicação.
Gerar um código CSR no Node.js
Se você ainda não solicitou um certificado SSL, primeiro precisa gerar um CSR (Certificate Signing Request). O CSR é um pequeno bloco de texto codificado que contém seus dados de contato e chave pública, e você o envia à Autoridade Certificadora ao fazer o pedido. Você tem duas opções:
- Gere o CSR automaticamente usando nosso Gerador de CSR.
- Siga nosso tutorial passo a passo sobre como criar o CSR no Node.js.
Envie o CSR à Autoridade Certificadora durante o seu pedido. Depois que a CA validar e emitir seu certificado SSL, prossiga com a instalação abaixo.
Instalar um certificado SSL no Node.js
Etapa 1: Prepare seus arquivos de certificado
Após a validação, a Autoridade Certificadora envia por e-mail os arquivos do certificado. Extraia o arquivo compactado. Você deve ter:
- yourdomain.crt, o certificado do seu domínio principal.
- yourdomain.ca-bundle, os certificados intermediários (e raiz) que compõem o pacote de CA.
- yourdomain.key, a chave privada que você gerou junto com o CSR.
Os navegadores devem receber a cadeia intermediária, não apenas o certificado do seu domínio, ou alguns clientes rejeitarão a conexão. A forma mais limpa de servir a cadeia no Node.js é combinar seu certificado e o pacote de CA em um único arquivo de cadeia completa:
cat yourdomain.crt yourdomain.ca-bundle > fullchain.crt
Coloque os arquivos fullchain.crt e yourdomain.key em um local que sua aplicação possa ler, e mantenha a chave privada legível apenas pelo usuário que executa o Node.js.
Etapa 2: Crie um servidor HTTPS no Node.js
Crie um arquivo de servidor. Para esta demonstração, o chamamos de https_server.js, mas você pode usar qualquer nome de arquivo. O exemplo abaixo usa CommonJS (require), que funciona em todas as versões suportadas do Node.js. Substitua os caminhos em negrito pelos seus próprios:
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
// Recommended TLS hardening (2026): never negotiate below TLS 1.2
minVersion: 'TLSv1.2'
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);
Você precisa substituir as partes em negrito pelas suas próprias informações:
- /path/to/private.key: o caminho completo para o arquivo da sua chave privada.
- /path/to/fullchain.crt: o caminho completo para o arquivo de cadeia completa criado na Etapa 1.
Nota sobre a porta: o HTTPS usa a porta 443 por padrão. Vincular-se a ela requer privilégios elevados, portanto, por trás de um proxy reverso ou em desenvolvimento, você pode preferir uma porta alta, como 8443. Basta alterar o valor passado para listen().
Prefere módulos ES? Se o seu projeto usa "type": "module" no package.json (ou um arquivo .mjs), use a sintaxe import. As opções de TLS são idênticas:
import https from 'node:https';
import fs from 'node:fs';
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
minVersion: 'TLSv1.2'
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);
Alternativa: passe a cadeia com a opção ca:. Se preferir manter os arquivos separados em vez de criar um arquivo de cadeia completa, deixe cert apontando para o certificado do seu domínio e forneça os intermediários por meio de um array ca:
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/yourdomain.crt'),
ca: [
fs.readFileSync('/path/to/intermediate.crt'),
fs.readFileSync('/path/to/ca_bundle.crt')
],
minVersion: 'TLSv1.2'
};
Usando Express? Passe seu app Express como o manipulador de requisições. As opções do certificado permanecem exatamente as mesmas:
const express = require('express');
const https = require('https');
const fs = require('fs');
const app = express();
app.get('/', (req, res) => res.send('Hello over HTTPS'));
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
minVersion: 'TLSv1.2'
};
https.createServer(options, app).listen(443);
Etapa 3: Inicie seu servidor HTTPS Node.js
Execute o seguinte comando para iniciar a aplicação:
node https_server.js
Sua aplicação agora serve tráfego via HTTPS. Para uma implantação em produção, execute-a sob um gerenciador de processos (por exemplo, PM2 ou um serviço systemd) para que ela reinicie automaticamente e sobreviva a reinicializações.
Etapa 4: Teste sua instalação SSL
Teste sua instalação SSL em busca de possíveis erros ou vulnerabilidades usando uma de nossas ferramentas de verificação SSL. Você também pode confirmar a cadeia pela linha de comando:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
Isso exibe o emissor do certificado e as datas de validade, confirmando que seu servidor Node.js está apresentando o certificado correto.
Onde comprar um certificado SSL para Node.js?
A SSL Dragon é sua fonte para todas as suas necessidades de SSL. Oferecemos alguns dos preços mais baixos do mercado em toda a nossa linha de produtos SSL, e fizemos parceria com as melhores marcas de SSL do setor para garantir forte segurança e suporte dedicado. Todos os nossos certificados SSL são totalmente compatíveis com aplicações Node.js.
Emissão rápida, criptografia forte, 99,99% de confiança dos navegadores, suporte dedicado e garantia de reembolso de 25 dias.
Perguntas Frequentes
Use o módulo integrado https. Leia sua chave privada e o certificado de cadeia completa com fs.readFileSync(), passe-os como as opções key e cert para https.createServer() e chame .listen(443). O Node.js cuida do handshake TLS para você; não há um servidor web separado para configurar.
Você precisa que a cadeia intermediária seja servida, mas não necessariamente precisa da opção ca para isso. A abordagem mais simples é concatenar o certificado do seu domínio e o pacote de CA em um único arquivo de cadeia completa e apontar cert para ele. Use o array ca apenas se preferir manter o certificado e os intermediários em arquivos separados.
No Linux e no macOS, portas abaixo de 1024 são privilegiadas. Vincular-se diretamente à porta 443 requer permissões elevadas, motivo pelo qual muitas configurações executam o Node.js em uma porta alta, como 8443, atrás de um proxy reverso (Nginx ou um balanceador de carga) que termina ou encaminha o TLS. Para desenvolvimento, basta alterar o valor passado para listen().
Sim. O CommonJS (require) funciona em todas as versões suportadas do Node.js, mas se o seu projeto estiver configurado como um módulo ES (“type”: “module” no package.json ou um arquivo .mjs), você pode usar import https from ‘node:https’ em vez disso. As opções de TLS são idênticas de qualquer forma.
Abra seu site em um navegador e verifique o cadeado, execute-o através de nossas ferramentas de verificação SSL, ou consulte a partir do terminal com echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com para inspecionar o certificado que o servidor apresenta.
Conclusão
Instalar um certificado SSL no Node.js resume-se a construir um certificado de cadeia completa, lê-lo junto com sua chave privada com fs.readFileSync(), passá-los para https.createServer() com minVersion: ‘TLSv1.2’, e iniciar a aplicação com node https_server.js.
Precisa de um certificado primeiro? Confira nossos certificados SSL.
Economize 10% em certificados SSL ao fazer seu pedido hoje!
Emissão rápida, criptografia forte, 99,99% de confiança no navegador, suporte dedicado e garantia de reembolso de 25 dias. Código do cupom: SAVE10


