Per creare un server NodeJs su localhost che risponda in HTTPS è prima necessario generare un certificato.

Certificato self-signed

Il certificato può essere creato in Linux con il comando openss

Bash

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout sgart-localhost.key -out sgart-localhost.crt
questo è un esempio di output

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 []:
I file sgart-localhost.key e sgart-localhost.crt serviranno per configurare il server NodeJs express.

Progetto

Per creare il progetto di test esegui questi comandi

DOS / Batch file

npm init -y
npm i express
e crea il file index.js.

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
Tags:
Linux18 NodeJs21
Potrebbe interessarti anche: