NodeJS 和 SSL - "bad password read"
NodeJS & SSL - "bad password read"
节点无法为 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 并没有真正相关。
这是因为您在生成证书时指定了密码。任何想使用它的人都必须提供此密码。
向凭据添加密码字段可解决问题。
var credentials = {
key: fs.readFileSync('XXX.key', 'utf8'),
cert: fs.readFileSync('XXX.crt', 'utf8'),
passphrase: 'XXXX'
}
var httpsServer = https.createServer(credentials, app);
以下命令将生成未加密的密钥,因此您无需提供密码:
openssl rsa -in yourKey.key -out newKey.key
此命令将提示您输入密码。
使用这些生成 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
节点无法为 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 并没有真正相关。
这是因为您在生成证书时指定了密码。任何想使用它的人都必须提供此密码。
向凭据添加密码字段可解决问题。
var credentials = {
key: fs.readFileSync('XXX.key', 'utf8'),
cert: fs.readFileSync('XXX.crt', 'utf8'),
passphrase: 'XXXX'
}
var httpsServer = https.createServer(credentials, app);
以下命令将生成未加密的密钥,因此您无需提供密码:
openssl rsa -in yourKey.key -out newKey.key
此命令将提示您输入密码。
使用这些生成 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