不带openssl的节点10从.pfx文件提取私钥

时间:2019-09-07 00:17:25

标签: node.js aws-lambda openssl pfx pkcs#12

我将要构建一个组件,该组件将使用密码接收 .pfx ,然后该应用需要提取一些信息,例如证书,私钥和结束日期。

我正在使用node-forge来尝试完成。我已经有了证书和私钥,但是当尝试导出证书时,结果是 RSA PRIVATE ,但是我希望得到 PRIVATE

那是我提取私钥的代码:

const fs = require('fs');
const forge = require('node-forge');

const file = fs.readFileSync('file.pfx');
const p12Der = forge.util.decode64(file.toString('base64'));
const pkcs12Asn1 = forge.asn1.fromDer(p12Der);
const pkcs12 = forge.pkcs12.pkcs12FromAsn1(pkcs12Asn1, 'PASSWORD');

const { key } = pkcs12.getBags({ bagType: forge.pki.oids.pkcs8ShroudedKeyBag })[
  forge.pki.oids.pkcs8ShroudedKeyBag
][0];

const pemPrivate = forge.pki.privateKeyToPem(key);

console.log(pemPrivate);

上面代码的输出是这样的:

-----BEGIN RSA PRIVATE KEY-----
A LOT OF TEXT
-----END RSA PRIVATE KEY-----

但是,我希望这样:

-----BEGIN PRIVATE KEY-----
A LOT OF TEXT
-----END PRIVATE KEY-----

就像下面命令的输出一样

openssl pkcs12 -in file.pfx -passin pass:PASSWORD -nodes -nocerts

PS 。: 我无法使用openssl,因为AWS Lambda envoriment节点10.x没有安装openssl

0 个答案:

没有答案