Respostas:
Consulte os documentos Express e Node para https.createServer (que é o que o Express recomenda usar):
var privateKey = fs.readFileSync( 'privatekey.pem' );
var certificate = fs.readFileSync( 'certificate.pem' );
https.createServer({
key: privateKey,
cert: certificate
}, app).listen(port);
Outras opções para createServer estão em: http://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener
createServer
in connect.js
(express apenas herda isso do connect). Você verá que ele retorna uma função com a assinatura correta. connect()
é simplesmente um alias para connect.createServer()
e, portanto, o é express()
(o que provavelmente faz alguma inicialização extra, mas o resultado ainda é uma função apropriada para uso como manipulador de solicitações).
app
está definido. Esta resposta é satisfatória.
Consegui obter o SSL funcionando com o seguinte código padrão:
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");
});
Este é o meu código de trabalho para o Express 4.0 .
O Express 4.0 é muito diferente do 3.0 e de outros.
4.0 você tem o arquivo / bin / www, que você adicionará https aqui.
"npm start" é a maneira padrão de iniciar o servidor express 4.0.
A função readFileSync () deve usar __dirname get directory atual
Enquanto require () use ./, consulte o diretório atual.
Primeiro, você coloca o arquivo private.key e public.cert na pasta / bin. É a mesma pasta do arquivo WWW .
nenhum desses diretórios encontrou erro:
key: fs.readFileSync('../private.key'),
cert: fs.readFileSync('../public.cert')
erro, nenhum diretório encontrado
key: fs.readFileSync('./private.key'),
cert: fs.readFileSync('./public.cert')
Código de trabalho deve ser
key: fs.readFileSync(__dirname + '/private.key', 'utf8'),
cert: fs.readFileSync(__dirname + '/public.cert', 'utf8')
O código https completo é:
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);