Comment configurer un certificat SSL pour un express.serveur js?
Avant, dans une ancienne version d'express, je pouvais faire ceci:
express.createServer({key:'keyFile', cert:'certFile'});
Cependant, dans les nouvelles versions d'express, cela ne fonctionne plus:
var app = express();
Dois-je appeler app.use()
pour définir les certificats? Si oui, comment?
3 réponses
Voir les documents Express ainsi que les documents de Noeud pour https.createServer (qui est ce que express recommande d'utiliser):
var privateKey = fs.readFileSync( 'privatekey.pem' );
var certificate = fs.readFileSync( 'certificate.pem' );
https.createServer({
key: privateKey,
cert: certificate
}, app).listen(port);
Les autres options pour createServer sont à: http://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener
J'ai pu faire fonctionner SSL avec le code standard suivant:
var fs = require('fs'),
http = require('http'),
https = require('https'),
express = require('express');
var port = 8000;
var options = {
key: fs.readFileSync('./ssl/privatekey.pem'),
cert: fs.readFileSync('./ssl/certificate.pem'),
};
var app = express();
var server = https.createServer(options, app).listen(port, function(){
console.log("Express server listening on port " + port);
});
app.get('/', function (req, res) {
res.writeHead(200);
res.end("hello world\n");
});
C'est ma code de travail pour express 4.0.
Express 4.0 est très différent de 3.0 et d'autres.
4.0 vous avez le fichier / bin / www, que vous allez ajouter https ici.
"npm start" est une façon standard de démarrer le serveur Express 4.0.
La fonction ReadFileSync() doit utiliser __dirname récupère le répertoire courant
Alors que require() Utiliser ./ se référer à courant répertoire.
d'abord, vous mettez privé.la clé et le public.fichier cert sous le dossier / bin, C'est le même dossier que le fichier WWW.
Aucun tel répertoire trouvé erreur:
key: fs.readFileSync('../private.key'),
cert: fs.readFileSync('../public.cert')
Erreur, aucun répertoire trouvé
key: fs.readFileSync('./private.key'),
cert: fs.readFileSync('./public.cert')
code de Travail doit être
key: fs.readFileSync(__dirname + '/private.key', 'utf8'),
cert: fs.readFileSync(__dirname + '/public.cert', 'utf8')
le code https complet est:
const https = require('https');
const fs = require('fs');
// readFileSync function must use __dirname get current directory
// require use ./ refer to current directory.
const options = {
key: fs.readFileSync(__dirname + '/private.key', 'utf8'),
cert: fs.readFileSync(__dirname + '/public.cert', 'utf8')
};
// Create HTTPs server.
var server = https.createServer(options, app);