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.