【问题标题】:Loading X509Certificate from Azure KeyVault从 Azure KeyVault 加载 X509Certificate
【发布时间】:2018-01-26 13:57:57
【问题描述】:

我们在 Azure 中托管了一个 Web 应用程序,我们使用它从 KeyVault 加载证书,以用于加密和其他服务的身份验证。从 KeyVault 读取值后,我们将创建这样的证书:

return new X509Certificate2(Convert.FromBase64String(secret.Value), string.Empty,
                    X509KeyStorageFlags.MachineKeySet |
                    X509KeyStorageFlags.PersistKeySet |
                    X509KeyStorageFlags.Exportable);

我们已经看到很多关于“密钥集不存在”和“请求被中止:无法创建 SSL/TLS 安全通道”的错误。

我怀疑这是因为它将私钥保存到磁盘 (C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys),这会在尝试再次读取它时导致问题,因为它是一个共享托管环境,我们不要完全拥有这台机器。

有没有合适的方法来做到这一点?我已经看到使用证书存储的引用,但我不太确定这与从 KeyVault 获取证书有什么关系。

【问题讨论】:

    标签: c# azure x509certificate azure-keyvault


    【解决方案1】:

    我认为更好的解决方案是使用Managed Service Identity(MSI)(如果适用)。 MSI 功能将在 Azure AD 中创建一个服务主体来表示服务/VM 的标识。并在 key-vault 中分配此服务主体属性角色或权限,这可以通过在 key-vault 的“设置 -> 访问策略”部分中创建新的访问策略来完成。服务主体应与服务名称相同。如果通过 powershell 创建,此名称可能不同。

    在 MSI 设置之后,可以将证书或机密上传到 key-vault 并在服务中访问。

    【讨论】:

      【解决方案2】:

      有没有合适的方法来做到这一点?我已经看到使用证书存储的引用,但我不太确定这与从 KeyVault 获取证书有何关系。

      在您的情况下,您似乎只是从 keyvault 加载证书,但证书并未部署到 Azure WebApp。关于如何通过 Key Vault 部署 Azure Web App 证书,您可以从这个blog 获取详细步骤。

      在 Azure WebApp 中使用证书的最简单方法是,您可以从 Azure 门户upload the pfx file to the Azure WebApp 添加名为 WEBSITE_LOAD_CERTIFICATES 的应用设置,并将其值设置为证书的指纹。 但与 KeyVault 没有任何关系

      【讨论】:

      • 谢谢,我想我可能需要更多地研究第二个选项。
      猜你喜欢
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      • 1970-01-01
      • 2020-08-01
      • 1970-01-01
      相关资源
      最近更新 更多