Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js nodejs azure密钥库证书_Node.js_Typescript_Certificate_Azure Keyvault - Fatal编程技术网

Node.js nodejs azure密钥库证书

Node.js nodejs azure密钥库证书,node.js,typescript,certificate,azure-keyvault,Node.js,Typescript,Certificate,Azure Keyvault,我从azure密钥库获得证书: const certificate = await keyVaultClient.getCertificate(this.keyVaultUri, certificateName, ''); 我拿到证书了。。。第一件好事: 但是在我找不到如何在https请求的头中设置证书之后 我尝试过不同的方法,但没有成功 有人知道我如何做到这一点。以下测试已完成 var options = { hostname: 'url.domain.com', port:

我从azure密钥库获得证书:

const certificate = await keyVaultClient.getCertificate(this.keyVaultUri, certificateName, '');
我拿到证书了。。。第一件好事:

但是在我找不到如何在https请求的头中设置证书之后

我尝试过不同的方法,但没有成功

有人知道我如何做到这一点。以下测试已完成

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”:

让keyVaultClient=new KeyVault.keyvaultclientazuredential; const secret=await keyVaultClient.getSecretthis.keyVaultUri,secretName

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

var options = {
                hostname: 'myurl.ti',
                port: 443,
                path: '/mySuperMethod',
                method: 'GET',
                agent: false,
                rejectUnauthorized: false,
                strictSSL: false,
                pfx: new Buffer(secret.value, 'base64'),
                passphrase: ''
            };
您会看到用于保护密码的密码短语password为空。为什么?事实上,在azure keyvault中上载证书时,必须提及密码。但是在keyvault没有保留密码并且设置为空之后

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

这里有一篇文章解释:

问候马修