nodejs azure keyvault 证书

nodejs azure keyvault certificate

我从 Azure Key Vault 获得证书:

const certificate = await keyVaultClient.getCertificate(this.keyVaultUri, certificateName, '');

我拿到了证书...第一件好事:)

但是我找不到如何在 https 请求的 header 中设置证书。

我试过各种方法都没有成功。

有人知道我怎样才能做到这一点。下面测试完成。

var options = {
    hostname: 'url.domain.com',
    port: 443,
    path: '/method1',
    method: 'GET',
    agent: false,
    rejectUnauthorized: false,
    strictSSL: false,
    //pfx: certificate.cer.toString('utf8'),
    //pfx: certificate.cer.toString('base64'),
    pfx: certificate,
    passphrase: 'passphrase'

  };

const req = https.request(options, (res: any) => { });

请注意,如果我在驱动器上使用证书,它会起作用:

pfx: fs.readFileSync(__dirname + '/my.pfx'),

提前致谢

我找到了解决办法。

首先要获得证书,我使用方法 'getSercret' 代替 'getCertificate' :

let keyVaultClient = new KeyVault.KeyVaultClient(azureCredential); const secret = await keyVaultClient.getSecret(this.keyVaultUri, secretName, '');

在 header 选项中,我已将密码传递到 base 64 格式的缓冲区中:

var options = {
                hostname: 'myurl.ti',
                port: 443,
                path: '/mySuperMethod',
                method: 'GET',
                agent: false,
                rejectUnauthorized: false,
                strictSSL: false,
                pfx: new Buffer(secret.value, 'base64'),
                passphrase: ''
            };

您看到密码(保护密码的密码)为空。为什么 ?事实上,当您在 azure keyvault 中上传证书时,您必须提及密码。但是在 keyvault 之后不保留密码,它被设置为空白。

微软知道这一点,对我来说这是个问题。

这里有一篇文章解释说:https://thuansoldier.net/7462/

问候马修