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
选项。 您不必将密钥以明文保存在某个节点的磁盘上。