无法启动NodeJS HTTPS服务器。 v0.10.23

时间:2014-01-02 22:21:15

标签: node.js https ssl-certificate

前段时间我在之前版本的nodejs上尝试了几乎相同的代码并且它有效(假设我们已经路由器

var https = require('https');
var fs = require("fs");
var crypto = require("crypto");

var private_key = fs.readFileSync("cert/domainname.key").toString();
var cert = fs.readFileSync("cert/domainname.crt").toString();
var options = crypto.createCredentials({
  key: private_key,
  cert: cert
});

var server = https.createServer(options, router);
server.listen(8080);

我收到错误缺少PFX或证书+私钥。为什么会这样?我通过私钥和证明。

2 个答案:

答案 0 :(得分:6)

您不需要使用crypto.createCredentials().toString()文件内容:

var options = {
    key: fs.readFileSync('cert/domainname.key'),
    cert: fs.readFileSync('cert/domainname.crt')
};

var server = https.createServer(options, router):

https.createServer()需要options Objectpfxkeycert,而不是credentials objectcrypto.createCredentials()创建。

.toString()的{​​{1}}上使用Buffer会尝试将二进制文件视为UTF-8并转换为UTF-16 readFileSync()导致数据丢失。


附注:与String不同,require()之类的fs路径将与current working directory相对。要将它们视为相对于当前模块文件,可以将它们与__dirname结合使用。

'cert/domainname.key'

答案 1 :(得分:0)

在此处查看使用https with express的示例:https://github.com/steinfletcher/https-expressjs-example/blob/master/README.md