如何在Azure Key Vault中存储公共证书(.cer文件)

Anu*_*nup 3 azure-keyvault

如何在天蓝色的密钥库中上载或存储公共密钥(.cer)文件。从keyvault面板,当我尝试上载适用于.pfx文件的任何.cer文件时,它给出了错误。

小智 7

您应该考虑 Key Vault 是否适合您的场景。公钥(本质上)不是机密数据,您不需要安全的地方来存储它。您可以为其使用通用存储服务。

如果您仍需要使用 Key Vault,则可以将其存储为机密。Key Vault 机密是八位位组序列,每个序列的最大大小为 25k 字节。


Jon*_* B. 5

加载公钥证书

Azure Key Vault Explorer允许您加载公共密钥证书(.cer文件)。

证书使用该应用程序使用的“标准”格式作为密钥存储在密钥库中(因为Azure密钥保管库本身不支持.cer文件)。

由Azure Key Vault Explorer存储的示例公共密钥证书

访问公钥证书

将公钥加载到Azure密钥保管库后,可以按以下方式以编程方式对其进行访问:

// load certificate based on format used by `Azure Key Vault Explorer`
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var certBundle = await kv.GetSecretAsync(secretIdentifier).ConfigureAwait(false);

byte[] certBytes = null;
if (certBundle.ContentType == "application/x-pkcs12")
{
    certBytes = Convert.FromBase64String(certBundle.Value);
}
else if (certBundle.ContentType == "application/pkix-cert")
{
    certBytes = certBundle?.Value.FromJson<PublicKeyCertificate>()?.Data;
}
if (certBytes != null && certBytes.Length > 0)
{
    return new X509Certificate2(certBytes,
        "",
        X509KeyStorageFlags.Exportable |
        X509KeyStorageFlags.MachineKeySet |
        X509KeyStorageFlags.PersistKeySet);
}
return null;

...

// class used to access public key certificate stored in Key Vault
public class PublicKeyCertificate
{
    public byte[] Data;
}
Run Code Online (Sandbox Code Playgroud)