gpt4 book ai didi

azure - 获取在 Azure Key Vault key 中上传的 pem 文件

转载 作者:行者123 更新时间:2023-12-03 00:39:09 24 4
gpt4 key购买 nike

我已通过 azure 门户将 pem 文件上传到 Azure Key Vault Keys,并尝试使用以下函数来使用 "azure-keyvault"获取数据: "^3.0.0-预览版”,

client.getKey(vaultUri, keyName, keyVersion,  {maxresults : 10}, function(err, result)  {
if (err) throw err;

console.log(result,'-----------key-');
})

结果

{ key:
{
kid: 'https://test.vault.azure.net/keys/test/1123123123lksldkf',
kty: 'RSA',
keyOps: [ 'sign', 'verify', 'wrapKey', 'unwrapKey', 'encrypt', 'decrypt' ],
n: <Buffer ... >,
e: <Buffer >
},
attributes: { enabled: true,
created: 2016-02-09T08:48:27.000Z,
updated: 2016-02-09T08:48:27.000Z,
recoveryLevel: 'Purgeable'
}
}

如何从 结果 下载 pem 文件,非常感谢任何帮助。我对 azure Vault 还很陌生,并尝试使用 key 、 secret 和证书进行一些操作。

最佳答案

将证书上传到 key 存储后,您将无法从 Azure Key Vault 下载证书文件形式的 key (无论是 .pem 还是 .pfx)。 Azure Key Vault 中的 key 专门用于签名/加密/解密操作。返回的 JSON 是 JWT(Json Web Token)的格式,仅包含存储 key 的公共(public)部分。这基本上意味着无法将输出转换为 PEM 或 X.509 的形式。

使用 key ,您可以备份 key ,但备份也在 Azure Key Vault 内受到保护,您无法检索或请求获取 key 正文内容。如果您丢失 key 并想要恢复它,备份会很有帮助。

(可能不在问题范围内,但我很乐意介绍)

如果您将证书上传到证书存储区,则只能导出 x509 证书的 CER 内容并生成 .cer 文件。您无法导出包括私钥在内的整个 key 。

如果您以 secret 形式将证书(即 .pfx 文件)上传到 Azure Key Vault,则可以使用以下几种方法以编程方式将其下载到客户端:

  • 使用GetSecretAsyn()
  • 调用 KeyVault REST API

这两种方式都需要 secret 标识符和访问 token (Azure Active Directory 为您提供)。然后,您需要将返回值从 Base64 转换为字节,并将其以 .pfx 文件的形式写入客户端。

下面是我在异步模式下使用 HttpClient 生成上传的 PFX 文件(来自 Secrets 存储)的示例代码

    public static async Task<string> GetSecret(HttpClient client)
{
string url = $"/secrets/cert01?api-version=2016-10-01";

using (var httpResponse = await client.GetAsync(url))
{
httpResponse.EnsureSuccessStatusCode();
string responsContent = await httpResponse.Content.ReadAsStringAsync();
JObject jsonKv = JObject.Parse(responsContent);
string secretBody = jsonKv["value"].ToString();
return secretBody;
}
}

public static async Task ExportPfx()
{
string filePath = @"test02.pfx";

var key = await GetSecret();
byte[] encodedText = Encoding.Unicode.GetBytes(key);
using (FileStream sourceStream = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.None, bufferSize: 4096, useAsync: true))
{
await sourceStream.WriteAsync(encodedText, 0, encodedText.Length);
}

}

证书导出后,将其导入到本地计算机并验证其是否具有相同的指纹和其他规范。

注意:从 Key Vault 导出的证书(作为 secret )没有密码,即使您在上传到 secret 存储时设置了密码。

关于azure - 获取在 Azure Key Vault key 中上传的 pem 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48708681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com