如何防止导入证书的私钥导出

How to prevent Private Key export for imported Certificate

小问题:如何制作导入证书 (pfx) 不可导出?

我们有一个要导入到 Azure KeyVault 中的证书 (pfx) 文件。但是,我们无法使此证书不可导出。有一个选项,在Issuance Policy/Advanced Policy Configuration 下,你可以设置'Exportable Private Key' 到'No' 但是好像不能申请导入的证书。

我们使用的代码是:

        var keyVaultClient = CreateKeyVaultClient();
        var name = "non-exportable-cert";

        var secret = await keyVaultClient.GetSecretAsync("azure-key-vault-url", name);

        var cert = new X509Certificate2(Convert.FromBase64String(secret.Value));

         // cert.HasPrivateKey = always True.

使用 Windows 证书存储时,我们必须将证书明确标记为可导出。我们在 Azure Key Vault 中根本没有这个选项。

当我们在 Key Vault 中生成证书时,此选项会起作用,这会导致 cert.HasPrivateKey 设置为 False。

不支持这种情况还是我们遗漏了什么?提前致谢!

当您将证书导入到 Azure Key Vault 时,您可以将 KeyProperties 中的 exportable 设置为 false,这表示无法导出私钥。

更多的细节,你可以参考这篇article