Azure Key Vault - 如何使用节点获取存储在 keyvault 中的私钥?

Azure KeyVault - How do I get the privatekey stored in keyvault with node?

我需要 HMAC 算法的秘密,或者用于 RSA 和 ECDSA 的 PEM 编码私钥,用于运行 JWT.sign()

现在我从函数 getSecret() 获取结果并将流写入 pfx 文件,然后我使用 openssl 获取私钥。

     const result = await client.getSecret(vaultUri, secretName, secretVersion);
     let writeStream = fs.createWriteStream("1.pfx"); 
     writeStream.write(result.value, 'base64');

     openssl pkcs12 -in 1.pfx -nocerts -nodes -out 1.key
     openssl rsa -in 1.key -out 1_pri.key

如何在没有openssl的情况下通过节点服务器上的结果获取私钥?

非常感谢任何帮助。

如果你想从 .pfx 中获取私钥,试试这个:

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

const file = fs.readFileSync("<path of your .pfx file>");
const p12Der = forge.util.decode64(file.toString('base64'));
const pkcs12Asn1 = forge.asn1.fromDer(p12Der);
const pkcs12 = forge.pkcs12.pkcs12FromAsn1(pkcs12Asn1, '<your .pfx password>');

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

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

console.log(pemPrivate);

结果: