Creare un server HTTPS su localhost con Express
Per creare un server NodeJs su localhost che risponda in HTTPS è prima necessario generare un certificato.
questo è un esempio di output
I file sgart-localhost.key e sgart-localhost.crt serviranno per configurare il server NodeJs express.
e crea il file index.js.
Certificato self-signed
Il certificato può essere creato in Linux con il comando openssBash
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout sgart-localhost.key -out sgart-localhost.crt
Text
sgart-localhost.cert
Generating a RSA private key
........+++++
...........+++++
writing new private key to 'sgart-localhost.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:IT
State or Province Name (full name) [Some-State]:Milan
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Sgart Certificate DEMO
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
Progetto
Per creare il progetto di test esegui questi comandiDOS / Batch file
npm init -y
npm i express
NodeJs & Express
Il codice JavaScript da inserire nel file index.js per generare il server HTTPS è questo:JavaScript: index.js
// certificate
const fs = require('fs');
const key = fs.readFileSync('./certificate/sgart-localhost.key');
const cert = fs.readFileSync('./certificate/sgart-localhost.crt');
// server https
const port = 3000;
const express = require('express');
const https = require('https');
const app = express();
const credential = {key: key, cert: cert };
const server = https.createServer(credential, app);
// page
app.get('/', (req, res) => {
res.send('<h1>Ok funziona</h1>')
});
// listening
server.listen(port, () => { console.log(`server listening on ${port}`) });
Il certificato funziona ma verrà riconosciuto come non sicuro.
Esecuzione
Esegui la demo con:DOS / Batch file
node index.js