我尝试为Express服务器配置HTTPS。我从this question's answers找到了以下代码。
console.log("Test 1");
var httpServer = http.createServer(app);
console.log("Test 2");
var httpsServer = https.createServer(credentials, app);
console.log("Test 3");
httpServer.listen(8080);
console.log("Test 4");
httpsServer.listen(8443);
console.log("Test 5");
问题是控制台中出现的唯一问题是Test 1
和Test 2
。在那条线之后似乎没有任何东西在运行。我基本上只想在HTTP和HTTPS上运行相同的Express应用程序。
过去我只使用server = app.listen(port);
来启动Express服务器。
有什么想法吗?
修改
Node应用程序继续运行,没有错误,但只是不打印最终的console.log
语句。
var fs = require('fs');
var privateKey = fs.readFileSync('ssl/servertest.key', 'utf8');
var certificate = fs.readFileSync('ssl/servertest.crt', 'utf8');
var credentials = {key: privateKey, cert: certificate};
servertest.key和servertest.crt。
注意:我知道将这些内容放到网上并将其公开是一个坏主意。以它为例。在投入生产之前,我将重新生成SSL密钥。
答案 0 :(得分:1)
是的,私钥受密码保护。
在我的系统上,我收到了错误,
Error: error:0906A068:PEM routines:PEM_do_header:bad password read
不确定你为什么不是,也许是它的节点版本。
这里有2个选项,可以使用openSSL从密钥中删除密码,也可以通过密码选项为选项提供密码。