【问题标题】:https ssl password in node js 0.4节点 js 0.4 中的 https ssl 密码
【发布时间】:2011-04-05 05:05:25
【问题描述】:

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

【问题讨论】:

    标签: https passwords node.js


    【解决方案1】:

    因此,即使在节点 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 会以交互方式提示您输入密码。

    【讨论】:

      【解决方案2】:

      作为记录,您可以在 Node.js 中创建 Credentials 对象时提供密码。这个section of Node.js documentation on the crypto module 声明可以为私钥或PFX 文件提供passphrase 选项。您不必将私钥以明文形式保存在磁盘的某个位置以供 Node 使用。

      【讨论】:

        猜你喜欢
        • 2017-09-24
        • 1970-01-01
        • 2019-09-09
        • 2019-06-19
        • 2018-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-31
        相关资源
        最近更新 更多