Como configurar um servidor HTTPS no Express.js?

O Express.js permite configurar um servidor HTTPS utilizando certificados SSL para comunicação segura entre cliente e servidor.

Como configurar um servidor HTTPS no Express.js?

O HTTPS (Hypertext Transfer Protocol Secure) garante comunicação segura entre cliente e servidor, protegendo dados por meio de criptografia. No Express.js, podemos configurar um servidor HTTPS utilizando certificados SSL.

1. Gerando certificados SSL para testes

Para configurar HTTPS localmente, podemos gerar um certificado autoassinado usando OpenSSL:

openssl req -nodes -new -x509 -keyout server.key -out server.cert

Isso criará dois arquivos:

  • server.key (chave privada)
  • server.cert (certificado público)

2. Configurando HTTPS no Express.js

Agora, criamos um servidor HTTPS utilizando os certificados:

const express = require('express');
const https = require('https');
const fs = require('fs');
const path = require('path');

const app = express();
app.use(express.json());

const options = {
    key: fs.readFileSync(path.join(__dirname, 'server.key')),
    cert: fs.readFileSync(path.join(__dirname, 'server.cert'))
};

app.get('/', (req, res) => {
    res.send('Servidor HTTPS rodando com Express.js!');
});

https.createServer(options, app).listen(443, () => {
    console.log('Servidor HTTPS rodando na porta 443');
});

Agora, podemos acessar a API via HTTPS: https://localhost/

3. Configurando HTTPS em produção

Para produção, utilize um certificado válido, como Let’s Encrypt:

  1. Instale o Certbot para obter certificados SSL gratuitos.
  2. Gere um certificado:
sudo certbot certonly --standalone -d seu-dominio.com -d www.seu-dominio.com
  1. No código, carregue os certificados gerados:
const options = {
    key: fs.readFileSync('/etc/letsencrypt/live/seu-dominio.com/privkey.pem'),
    cert: fs.readFileSync('/etc/letsencrypt/live/seu-dominio.com/fullchain.pem')
};

Conclusão

A configuração de um servidor HTTPS no Express.js é essencial para garantir segurança na troca de informações. Em produção, utilize certificados válidos para evitar avisos de segurança nos navegadores.

A adoção do HTTPS se tornou um padrão obrigatório para aplicações modernas. O Google prioriza sites seguros em seus rankings, tornando HTTPS essencial para SEO.

Plataformas como Facebook, Google e bancos digitais utilizam certificados SSL para proteger transações e dados sensíveis. A combinação de HTTPS com autenticação JWT garante uma API segura contra ataques como Man-in-the-Middle (MITM).

Algumas aplicações:

  • Proteção de dados em APIs REST
  • Autenticação segura de usuários
  • Prevenção contra ataques MITM
  • Melhoria no ranking de SEO
  • Segurança em pagamentos online

Dicas para quem está começando

  • Use HTTPS em produção para evitar falhas de segurança.
  • Utilize Let’s Encrypt para obter certificados gratuitos.
  • Evite armazenar credenciais sensíveis dentro do código.
  • Redirecione todas as requisições HTTP para HTTPS automaticamente.
  • Testes locais podem ser feitos com certificados autoassinados.

Contribuições de Henrique Almeida

Compartilhe este tutorial: Como configurar um servidor HTTPS no Express.js?

Compartilhe este tutorial

Continue aprendendo:

Como criar um CRUD completo no Express.js?

Um CRUD no Express.js permite criar, ler, atualizar e deletar registros em um banco de dados de forma estruturada.

Tutorial anterior

Como usar a biblioteca Multer para upload de arquivos no Node.js?

O Multer é uma biblioteca do Node.js que facilita o upload de arquivos em aplicações Express.js, permitindo armazená-los no servidor.

Próximo tutorial