Une alternative consiste à générer les certificats avec la bibliothèque pem en utilisant la méthode createCertificate de la classe.
Le processus serait le suivant :
Installez openssl dans votre système si ce n'est pas déjà fait, par exemple pour Windows 10 la version compilée des sources (semble être la plus ouverte) peut être trouvée ici : https://curl.se/Windows/ les explications sur la façon dont il est compilé et sauvegardé sont ici : https://wiki.openssl.org/index.php/Binaries . Pour la source https://www.openssl.org/community/binaries.html Pour Windows, vous pouvez ajouter le chemin du fichier openssl.bin à la variable de chemin de l'environnement système ( https://www.architectryan.com/2018/08/31/how-to-change-environment-variables-on-Windows-10/ ) ou passer l'emplacement du fichier à la bibliothèque PEM.
Installez pem en utilisant (documentation ici : https://github.com/Dexus/pem
npm i pem
à la ligne de commande à la racine du serveur.
D'après la documentation, vous pouvez voir qu'un simple serveur https avec les clés peut être créé simplement par :
const https = require('https')
const pem = require('pem')
pem.createCertificate({ days: 1, selfSigned: true }, (err, keys) => {
if (err) {
throw err
}
https.createServer({ key: keys.clientKey, cert: keys.certificate }, (req, res) => {
res.end('o hai!')
}).listen(443)
})
ou en utilisant l'express npm i express
à la ligne de commande à la racine du serveur) :
const https = require('https')
const pem = require('pem')
const express = require('express')
pem.createCertificate({ days: 1, selfSigned: true }, (err, keys) => {
if (err) {
throw err
}
const app = express()
app.get('/', (req, res) => {
res.send('o hai!')
})
https.createServer({ key: keys.clientKey, cert: keys.certificate }, app).listen(443)
})
Je viens de remplacer var par const, comme il se doit, et functions par arrow functions.