NodeJS & SSL - “密码读取错误”

Posted

技术标签:

【中文标题】NodeJS & SSL - “密码读取错误”【英文标题】:NodeJS & SSL - "bad password read" 【发布时间】:2015-09-06 14:19:12 【问题描述】:

节点未能为 SSL 通信创建安全上下文。

具体来说,我正在尝试让远程通知在 ios 上工作。我使用了一个名为 node-apn 的模块,它会引发此错误:

Error: error:0906A068:PEM routines:PEM_do_header:bad password read
at Error (native)
at Object.createSecureContext (_tls_common.js:108:19)
at Object.exports.connect (_tls_wrap.js:852:21)
at apnSocket (/home/Slurp/node_modules/apn/lib/socket.js:56:19)
at Connection.<anonymous> (/home/Slurp/node_modules/apn/lib/connection.js:188:17)
at _fulfilled (/home/Slurp/node_modules/apn/node_modules/q/q.js:834:54)
at self.promiseDispatch.done (/home/Slurp/node_modules/apn/node_modules/q/q.js:863:30)
at Promise.promise.promiseDispatch (/home/Slurp/node_modules/apn/node_modules/q/q.js:796:13)

不过,这似乎是一个一般性错误,与 APN 并没有真正的具体关系。

【问题讨论】:

【参考方案1】:

这是因为您在生成证书时指定了密码。这是任何想使用它的人都必须提供的密码。

向凭据添加密码字段可以解决问题。

var credentials = 
    key: fs.readFileSync('XXX.key', 'utf8'),
    cert: fs.readFileSync('XXX.crt', 'utf8'),
    passphrase: 'XXXX'


var httpsServer = https.createServer(credentials, app);

【讨论】:

此密码是否用于创建 .pem 或 '.crt' 文件? 我认为是用来创建.crt文件的【参考方案2】:

以下命令将生成未加密的密钥,因此您无需提供密码:

openssl rsa -in yourKey.key -out newKey.key

此命令将提示您输入密码。

【讨论】:

【参考方案3】:

使用这些来生成 pem。

openssl genrsa -out server-key.pem 1024 openssl req -new -key server-key.pem -out server-csr.pem openssl x509 -req -in server-csr.pem -signkey server-key.pem -out server-cert.pem

【讨论】:

以上是关于NodeJS & SSL - “密码读取错误”的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS使用SSL证书

nodejs-websocket+ssl证书

在本地创建 spring 和 nodejs 应用程序之间的 SSL 连接

NodeJS 中的 AWS RDS SSL 连接错误

Amazon Elatisc BeanStalk 单实例上的 SSL 端口 NodeJS

GRPC Java客户端和NodeJS服务器之间的ssl握手问题