NestJS com HTTPS: configurando certificados SSL
š Introdução
O uso de HTTPS em aplicações NestJS garante comunicação segura, pois utiliza certificados SSL para criptografar o trÔfego.
A configuração é simples e pode ser aplicada tanto localmente quanto em produção, bastando carregar as chaves e iniciar o servidor com suporte a TLS.
VocĆŖ pode usar certificados gerados (autoassinados) pelo mkcert para ambientes locais (exclusivamente testes).
Para produção, é indicado utilizar certificados fornecidos por autoridades confiÔveis.
A seguir, seguem trĆŖs exemplos simples:
āļø Exemplo 1 ā mkcert + Nginx
1. Instalar o mkcert
sudo apt install libnss3-tools
brew install mkcert
mkcert -install
2. Gerar certificados
mkcert localhost
Isso cria localhost.pem e localhost-key.pem.
3. Configurar Nginx
server {
listen 443 ssl;
ssl_certificate /etc/nginx/certs/localhost.pem;
ssl_certificate_key /etc/nginx/certs/localhost-key.pem;
location / {
proxy_pass http://localhost:3000;
}
}
4. NestJS interno (HTTP)
await app.listen(3000);
āļø Exemplo 2 ā Npm
1. Instalar mkcert (Linux/macOS/Windows)
npm install -g mkcert
2. Criar certificados
Criar autoridade certificadora (CA):
mkcert create-ca
Criar certificado:
mkcert create-cert
3. Usar no NestJS
import fs from 'fs';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule, {
httpsOptions: {
key: fs.readFileSync('./secrets/cert.key'),
cert: fs.readFileSync('./secrets/cert.crt'),
},
});
await app.listen(3000);
}
bootstrap();
āļø Exemplo 3 ā Sem mkcert (Gerando certificados com OpenSSL)
1. Instalar OpenSSL
sudo apt install openssl
brew install openssl
2. Gerar chave e certificado
openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 -keyout server.key -out server.crt
3. Usar no NestJS
import fs from 'fs';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule, {
httpsOptions: {
key: fs.readFileSync('server.key'),
cert: fs.readFileSync('server.crt'),
},
});
await app.listen(3000);
}
bootstrap();
4. Ajustes para produção
- Utilize certificados vƔlidos de autoridades como Let's Encrypt, ZeroSSL ou Cloudflare.
- Evite deixar certificados no repositório; use variÔveis de ambiente.
- Certificados devem ser renovados periodicamente.
- Em HTTPS real, o navegador não exibirÔ avisos de segurança.
- Pode ser necessƔrio configurar firewall ou reverse proxy.
5. Testando sua API HTTPS
- Acesse via:
https://localhost:3000 - Certificados autoassinados exibirĆ£o aviso ā Ć© normal.
- Teste rotas com Postman ou Insomnia.
- Verifique se o cadeado aparece em produção.
- Confirme os cabeƧalhos TLS na resposta.
āļø Ferramentas de produção
- Imagens geradas por: I.A. ChatGPT
- ConteĆŗdo gerado com apoio de I. A : ChatGPT
- Autor/ Revisão Humana: Roberto Butzke Junior
#NestJS #HTTPS #SSL



