【问题标题】:HAPI SSL error:0906D06C:PEM routines:PEM_read_bio:no start lineHAPI SSL 错误:0906D06C:PEM 例程:PEM_read_bio:没有起始行
【发布时间】:2016-06-26 17:58:15
【问题描述】:

我有一个在 HTTP 上运行良好的 Hapi 服务器。我需要通过 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)

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

【问题讨论】:

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


【解决方案1】:

我遇到了类似的问题,我的配置不同,因为我将证书和密钥作为字符串提供(这仅适用于开发人员)。我遇到了同样的错误,因为我从文本编辑器中线性化了我的键,该编辑器删除了换行符 (\n) 字符。一旦我将这些 \n 字符添加回我的字符串,它就工作得很好。这让我想到了你的问题....

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

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

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

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2011-04-05
    • 1970-01-01
    • 2020-04-08
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2015-09-11
    相关资源
    最近更新 更多