Jwt Azure KeyVault-如何使用节点获取存储在KeyVault中的私钥?

Jwt Azure KeyVault-如何使用节点获取存储在KeyVault中的私钥?,jwt,token,sign,azure-keyvault,Jwt,Token,Sign,Azure Keyvault,我需要HMAC算法的秘密,或者用于函数JWT.sign()的RSA和ECDSA的PEM编码私钥 现在我从函数getSecret()获得结果,并将其写入pfx文件,然后使用openssl获取私钥 const result = await client.getSecret(vaultUri, secretName, secretVersion); let writeStream = fs.createWriteStream("1.pfx"); writeStream.

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

现在我从函数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);
const fs=require('fs');
const forge=require('node-forge');
const file=fs.readFileSync(“”);
const p12Der=forge.util.decode64(file.toString('base64');
常量pkcs12Asn1=forge.asn1.fromDer(p12Der);
const pkcs12=forge.pkcs12.pkcs12fromsn1(pkcs12Asn1',);
const{key}=pkcs12.getBags({bagType:forge.pki.oids.pkcs8sovertedkeybag})[
forge.pki.oids.pkcs8带护罩钥匙袋
][0];
const pemPrivate=forge.pki.privateKeyToPem(密钥);
控制台日志(私有);
结果:

欢迎来到SO!你试了什么?任何研究?非常感谢,它在pemPrivate上工作,然后我尝试做publicKeyToPem,它警告我不能使用pemPrivate使用的密钥。我如何才能导出公钥?Hi@hooray2015,很高兴知道这个问题已经解决,请将此标记为答案,以便帮助其他有类似问题的人。如果你有任何进一步的问题,请张贴另一个问题的细节,我会帮助你当我看到它。谢谢