https ssl密码在节点js 0.4中

时间:2011-04-05 05:05:25

标签: https passwords node.js

节点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上的位置?

2 个答案:

答案 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选项。您不必将您的私钥保存在明确的文本磁盘上。