【问题标题】:NodeJS load PFX certificate from fileNodeJS 从文件中加载 PFX 证书
【发布时间】:2017-08-02 20:59:54
【问题描述】:

我正在使用 Node.JS 和 TypeScript 编写一个小项目,其中一个要求是从 .pfx 文件中读取 PFX 证书并在代码中使用它来加密有效负载主体

我有一个名为 cert1.pfx 的证书公钥/私钥文件,我的代码需要此证书,如下所示

...
const cert = loadPfx("cert1.pfx");
const p: Payload = new Payload();
p.addReaderCertificate(cert);
...

我四处搜索,但找不到为我的用例加载 PFX 的方法,我看到了为 HTTPS 服务器或 Express.JS 加载 PFX 的示例,我查看了 node-x509,但这是针对 BASE64 编码的 CER或 PEM 证书,我还查看了 node-rsa,但那是使用公钥/私钥进行加密/解密。

有人知道这是否可能吗?如果是这样,将不胜感激一些关于如何完成的指示。

【问题讨论】:

    标签: node.js typescript pfx pkcs#12 p12


    【解决方案1】:

    我也遇到了类似的问题@neil-stevens 解决方案帮助我阅读了 .pfx 文件,但我发现它返回加密的 pem 的一个功能/错误(我不知道它到底是什么)私钥主要在 RSA 中,但是如果您需要实际的私钥,则需要将加密的密钥导出到 pkcs8,这可以使用 Node RSA 完成。

    用法:

    const RSAKey = cert.key; const key = new NodeRSA(RSAKey); const privateKey = key.exportKey("pkcs8");

    【讨论】:

      【解决方案2】:

      听起来你只需要使用 Node 自己的 https 功能。 Node 可以直接读取 PFX 文件。 (Https.createServer, SSL Options)

      来自 Node.js 站点的示例:

      const https = require('https');
      const fs = require('fs');
      
      const options = {
        pfx: fs.readFileSync('test/fixtures/test_cert.pfx'),
        passphrase: 'sample'
      };
      
      https.createServer(options, (req, res) => {
        res.writeHead(200);
        res.end('hello world\n');
      }).listen(8000);
      

      【讨论】:

        【解决方案3】:

        经过大量研究和搜索 Google 档案后,我发现了一个名为 pem 的包,它具有以下方法:

        pem.readPkcs12(bufferOrPath, [options], callback)
        

        这可以读取 PKCS#12 文件(或者换句话说,*.pfx*.p12 文件)等等,我在早期的研究中肯定错过了这一点。

        用法:

        const pem = require("pem");
        const fs = require("fs");
        
        const pfx = fs.readFileSync(__dirname + "/test.pfx");
        pem.readPkcs12(pfx, { p12Password: "password" }, (err, cert) => {
            console.log(cert);
        });
        

        输出:

        { cert: "...", ca: ["subca", "rootca"], key: "..." }
        

        您可以找到更多herehere

        【讨论】:

        • 我在控制台中看不到任何输出
        • @Anand 是对的空对象来了
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-07
        • 1970-01-01
        • 1970-01-01
        • 2015-08-30
        • 1970-01-01
        相关资源
        最近更新 更多