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 - “密码读取错误”的主要内容,如果未能解决你的问题,请参考以下文章
在本地创建 spring 和 nodejs 应用程序之间的 SSL 连接