Como criar uma aplicação com https utilizando nodejs+express

Para criar este projeto assumimos que:

  • O certificado é autoassinado
  • É uma aplicação que vai funcionar para testar algumas funcionalidades que devem ser servidas via https
  • o certificado é configurado diretamente na aplicação nodejs-express.

Vamos então ao código:

Criamos um novo projeto chamado expressapphttps após criar o diretório podemos criar um novo projeto node.

Supondo que está dentro do diretório expressapphttps rodar o comando npm init

Após responder as perguntas terá um projeto no estado inicial, editar o arquivo:

***package.json*** neste arquivo editar a seção scripts adicionar duas linhas, as linhas que contém "start" e "dev".

{
  "name": "expressapphttps",
  "version": "1.0.0",
  "description": "express",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node app.js",
    "dev": "node --watch app.js"
  },
  "author": "danizavtz",
  "license": "Apache-2.0",
  "dependencies": {
    "express": "^4.19.2"
  }
}

Após editar este arquivo, adicionar um novo arquivo app.js, o conteúdo desse arquivo deve ser:

***app.js***

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

app.use('/', (req, res) => {
    rres.send('hello I am SSL Server !')
});

const options = {
    key: '',
    cert: ''
}
const port = process.env.PORT || 8080;
const sslServer = https.createServer(options, app);
sslServer.listen(port, () => {
    console.log(`Secure server is listening on port ${port}`)
});

Primeiramente criamos um certificado válido. Para isto segui o tutorial desta postagem de blog.

Os certificados gerados devem ser colocados no diretório cert .

Após os certificados estarem nos locais devidos, vamos apenas editar para adicionar o caminho relativo para os certificados:

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

app.use('/', (req, res) => {
    res.send('hello I am SSL Server !')
});

const options = {
    key: fs.readFileSync(path.join(__dirname, './cert/key.pem')),
    cert: fs.readFileSync(path.join(__dirname, './cert/cert.pem'))
}
const port = process.env.PORT || 8080;
const sslServer = https.createServer(options, app);
sslServer.listen(port, () => {
    console.log(`Secure server is listening on port ${port}`)
});

Pronto, agora após iniciar a aplicação será possível utilizar est aplicação através do protocolo https.