Odpowiedzi:
Zobacz dokumentację Express, a także dokumentację Node dla https.createServer (która jest tym, co express zaleca użycie):
var privateKey = fs.readFileSync( 'privatekey.pem' );
var certificate = fs.readFileSync( 'certificate.pem' );
https.createServer({
key: privateKey,
cert: certificate
}, app).listen(port);
Inne opcje createServer są dostępne pod adresem : http://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener
createServer
in connect.js
(express po prostu dziedziczy to z connect). Zobaczysz, że zwraca funkcję z poprawnym podpisem. connect()
jest po prostu aliasem dla connect.createServer()
i tak jest express()
(co prawdopodobnie wymaga dodatkowej inicjalizacji, ale wynikiem jest nadal funkcja odpowiednia do użycia jako procedura obsługi żądań).
app
jest zdefiniowane. Ta odpowiedź jest zadowalająca.
Udało mi się uzyskać SSL działający z następującym standardowym kodem:
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");
});
To jest mój działający kod dla Express 4.0 .
express 4.0 bardzo różni się od 3.0 i innych.
4.0 masz plik / bin / www, który zamierzasz dodać tutaj https.
„npm start” to standardowy sposób uruchamiania serwera Express 4.0.
Funkcja readFileSync () powinna używać __dirname, aby uzyskać bieżący katalog
while require () use ./ odwołuje się do bieżącego katalogu.
Najpierw umieść plik private.key i public.cert w folderze / bin, jest to ten sam folder, co plik WWW .
nie znaleziono takiego katalogu błąd:
key: fs.readFileSync('../private.key'),
cert: fs.readFileSync('../public.cert')
błąd, nie znaleziono takiego katalogu
key: fs.readFileSync('./private.key'),
cert: fs.readFileSync('./public.cert')
Kod roboczy powinien być
key: fs.readFileSync(__dirname + '/private.key', 'utf8'),
cert: fs.readFileSync(__dirname + '/public.cert', 'utf8')
Kompletny kod https to:
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);