节点0.2.6方式:
var credentials = crypto.createCredentials({ "key": SSLKey, "cert": SSLCert, "ca": Ca, "password": SSLKeyPass })
var client = http.createClient(apiPort, host, true, credentials)
node 0.4 way:
var options = {
host: apiHost,
port: apiPort,
method: 'GET',
path: uri,
headers: {host: host},
key:SSLKey,
cert:SSLCert,
ca:Ca,
password:SSLKeyPass
}
var request = https.request(options, function (response) {
正如您所看到的,需要密码,我不知道密码应该在节点0.4的哪个位置。
SSLKeyPass在节点0.4上的位置?
答案 0 :(得分:2)
因此,即使在节点0.2.6源代码中,crypto.js模块也不会在传递给createCredentials的对象中查找password
属性。 Here's the createCredentials source from node 0.2.6。在版本0.4.8中,仍然没有提到crypto.js模块中的单词password
。你的0.2.6代码真的有效吗?
作为一般性评论,使用openssl解密您的私钥,将其保密在磁盘上,并让您的节点代码读取该文件。这似乎是最常用的选择。其他选项是A)必须手动键入密码才能在启动节点服务器时解密您的私钥(几乎没有人这样做)或B)在磁盘上保留您的明文密码,这与保持明文无关私钥在磁盘上,所以AFAIK这也是解决私钥安全问题的一种非常罕见的解决方案。
您可以使用openssl命令行解密私钥,如下所示:
openssl rsa -in your_encrypted_private.ekey -out your_private.key
openssl将以交互方式提示您输入密码。
答案 1 :(得分:1)
对于记录,可以在Node.js中创建Credentials对象时提供密码。此section of Node.js documentation on the crypto module表示可以为私钥或passphrase
文件提供PFX
选项。您不必将您的私钥保存在明确的文本磁盘上。