HAPI SSL错误:0906D06C:PEM例程:PEM_read_bio:无起始行

时间:2016-03-11 13:08:11

标签: node.js ssl https hapijs tls1.2

我有一台Hapi服务器,可以正常使用HTTP。我需要通过HTTPS完成这项工作。我有一张从COMODO购买的证书。

我的钥匙

 -----BEGIN PRIVATE KEY-----
 MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDGyXFDz/pSzMxO
 ...
 g7N2PgtU9nhM7eYhQmhjB+4=
 -----END PRIVATE KEY-----

我的证书

-----BEGIN CERTIFICATE-----
MIIFbDCCBFSgAwIBAgIRAK3oQPHzO66FR3iLafOh2JkwDQYJKoZIhvcNAQELBQAw
...
pvWiUJabAat2O+hexjv55O4RkfQ13aIKo1Z7VeWyNQdEPaSCOFtteC4a3WelWcZ7
-----END CERTIFICATE-----

(还尝试使用带有相同问题的组合根证书包)

编辑:证书和密钥都是PEM格式,而不是DER格式。行结尾也没有问题。

我的服务器代码

var tls = {
    key: fs.readFileSync('privkey.pem'),
    cert: fs.readFileSync('certificate.pem')
};

var server = new Hapi.Server();

server.connection({
    address: '0.0.0.0',
    port: 443,
    tls: tls,
    routes: { cors: { origin: ['*'] }, validate: { options: { abortEarly: false } } }
});

尝试启动服务器时,我最终遇到以下错误

node server.js

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
    at Error (native)
    at Object.createSecureContext (_tls_common.js:87:19)
    at Server (_tls_wrap.js:754:25)
    at new Server (https.js:24:14)
    at Object.exports.createServer (https.js:44:10)
    at new module.exports.internals.Connection.options (W:\project\node_modules\hapi\lib\connection.js:89:74)
    at internals.Server.connection (W:\project\node_modules\hapi\lib\server.js:121:24)
    at Object.<anonymous> (W:\project\server.js:98:8)
    at Module._compile (module.js:398:26)
    at Object.Module._extensions..js (module.js:405:10)

发生了什么事?我该如何解决? 任何帮助,将不胜感激。 感谢

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,我的配置不同,因为我以字符串形式提供证书和密钥(仅开发人员)。我遇到了同样的错误,因为我从一个文本编辑器线性化了我的密钥,该文本编辑器删除了新行(\ n)字符。一旦将这些\ n字符添加回字符串中,它就可以正常工作。这让我开始思考您的问题。...

我使用我的证书和密钥测试了您的fs.readFileSync('server.key')(是,server.key是PEM格式)代码,我注意到,没有指定编码,文件数据就以字节数组形式返回。 <Buffer 2d 2d 2d 2d ....

但是,指定编码fs.readFileSync('server.key', 'utf-8')确实将证书数据作为人类可读的字符串返回给我。

我会尝试更新您的readFileSync调用以包含类似“ utf-8”的编码-这可能就是为什么hapi无法理解您的证书数据的原因。

希望这会有所帮助!