HTTPS密码在节点js 0.4

节点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.6源代码中,crypto.js模块也不会在您传递给createCredentials的对象中查找password属性。 这是来自节点0.2.6的createCredentials源代码 。 在0.4.8版中,在crypto.js模块中仍然没有提到password这个词。 你的0.2.6代码真的有用吗?

作为一般性评论,使用openssl解密您的私钥,将其保存在磁盘上,并让您的节点代码读取该文件。 这似乎是最常用的选项。 其他选项是A)必须手动键入密码来解密你的私钥,每当你启动你的节点服务器(几乎没有人这样做)或B)保持你的明文密码在磁盘上,这是没有什么不同,只是保持明文在磁盘上的私钥,所以AFAIK这也是一个非常罕见的私钥安全问题的解决scheme。

你可以像这样用openssl命令行解密你的私钥:

 openssl rsa -in your_encrypted_private.ekey -out your_private.key 

openssl会交互地提示你input密码。

为了logging,您可以在Node.js中创buildCredentials对象时提供密码。 encryption模块上的这部分Node.js文档指出可以为私钥或PFX文件提供passphrase选项。 您不必将密钥以明文保存在某个节点的磁盘上。