Відповіді:
Перегляньте документи Express , а також документи Node для https.createServer (саме те, що експрес рекомендує використовувати):
var privateKey = fs.readFileSync( 'privatekey.pem' );
var certificate = fs.readFileSync( 'certificate.pem' );
https.createServer({
key: privateKey,
cert: certificate
}, app).listen(port);
Інші параметри createServer є за адресою: http://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener
createServer
в connect.js
(express просто успадковує це від підключення). Ви побачите, що він повертає функцію з правильним підписом. connect()
просто псевдонім для connect.createServer()
і тому так є express()
(що, ймовірно, робить додаткову ініціалізацію, але результат все-таки є функцією, придатною для використання як обробник запиту).
app
визначено. Ця відповідь задовільна.
Мені вдалося отримати SSL, що працює з таким кодовим шаблоном:
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");
});
Це мій робочий код для експрес 4.0 .
express 4.0 сильно відрізняється від 3.0 та інших.
4.0 у вас є / bin / www файл, до якого ви збираєтесь додати тут https.
"npm start" - це стандартний спосіб запуску сервера Express 4.0.
Функція readFileSync () повинна використовувати __dirname отримати поточний каталог
при цьому вимагайте () використання ./ зверніться до поточного каталогу.
Спочатку ви поміщаєте файл private.key та public.cert в папку / bin, це та сама папка, що і файл WWW .
не знайдена помилка в такому каталозі:
key: fs.readFileSync('../private.key'),
cert: fs.readFileSync('../public.cert')
помилка, такого каталогу не знайдено
key: fs.readFileSync('./private.key'),
cert: fs.readFileSync('./public.cert')
Робочий код повинен бути
key: fs.readFileSync(__dirname + '/private.key', 'utf8'),
cert: fs.readFileSync(__dirname + '/public.cert', 'utf8')
Повний https-код:
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);