Answers:
请参阅Express文档以及https.createServer的Node文档(express建议使用的文档):
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
in 的定义connect.js
(express只是从connect继承过来的)。您会看到它返回了带有正确签名的函数。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");
});
这是我的Express 4.0的工作代码。
express 4.0与3.0和其他版本有很大的不同。
4.0中有/ bin / www文件,您将在此处添加https。
“ npm start”是启动Express 4.0服务器的标准方式。
readFileSync()函数应使用__dirname获取当前目录
而require()使用./引用当前目录。
首先,将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);