KeyVault - 如何从我的 C# 应用程序获取存储在 keyvault 中的 pfx 文件?

KeyVault - How do I get the pfx file stored in keyvault from my C# app?

这是一个与密钥保管库相关的问题。 我在 keyvault 中存储了一个 pfx 证书(带有私钥)。 我正在尝试从我的服务负责人那里访问密钥库以获取证书。 我正在编写以下代码来检索 pfx 证书。但是证书文件没有私钥☹ 我无法获得我放入的所有身份验证有效的私钥文件:

        var keyVaultService = new KeyVaultService(keyVaultSettings);
        var pfx = await keyVaultService.GetKeyVaultSecretValue("test-cert");

        Assert.IsTrue(!string.IsNullOrEmpty(pfx));

        var bytes = Convert.FromBase64String(pfx);
        var coll = new X509Certificate2Collection();
        coll.Import(bytes, null, X509KeyStorageFlags.Exportable);
        var cert = coll[0];
        Assert.IsTrue(cert.HasPrivateKey); // Assert FAILS!!!
        var key = cert.PrivateKey.ToString();
        Console.WriteLine("private key: " + key);

您的代码看起来不错。内容不多,但我也在控制台应用程序中快速尝试了它,它返回 cert.HasPrivateKey 为真。

我假设您指定了正确的密钥保管库设置,并且秘密名称将正是您的证书名称。

我认为有 2 个可能的原因:

  1. 您从 KeyVault 获得了正确的响应,但在转换为字节时丢失了它。示例 - 看看这个类似的问题 -

  2. 您可能需要检查是否已将证书正确上传到 KeyVault。是否有可能您没有将证书正确添加到保险库?或仅添加 pfx 的 public 证书部分。

如果任何一个都没有意义,请分享更详细的代码或要点,这样会更容易分辨。