Avant, dans une version antérieure d'Express, je pouvais le faire:
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 certs? Si c'est le cas, comment?
Voir les documents Express ainsi que les Documents sur les nœuds pour https.createServer (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 de createServer sont les suivantes: 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");
});
Ceci est mon code de travail pour exprimer 4.0 .
express 4.0 est très différent de 3.0 et des autres.
4.0 vous avez le fichier/bin/www, que vous allez ajouter https ici.
"npm start" est la méthode standard pour démarrer Express 4.0 Server.
la fonction readFileSync () doit utiliser __ dirname obtenir le répertoire en cours
tandis que require () utilise ./ fait référence au répertoire en cours.
Vous commencez par placer les fichiers private.key et public.cert dans le dossier/bin. Il s'agit du même dossier que le fichier WWW .
aucun répertoire de ce type n'a trouvé d'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')
Le code de travail devrait ê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);