如何在Azure Key Vault中存储Public Certiticate(.cer文件)

时间:2017-04-21 07:32:18

标签: azure-keyvault

如何在azure keyvault中上传或存储公钥(.cer)文件。在keyvault面板中,当我尝试上传任何.cer文件时,它会出错。它适用于.pfx文件。

2 个答案:

答案 0 :(得分:3)

加载公钥证书

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

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

Example public key cert as stored by Azure Key Vault Explorer

访问公钥证书

将公钥加载到Azure Key Vault后,可以按照以下方式以编程方式访问它们:

// 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;
}

答案 1 :(得分:1)

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

如果您仍需要使用密钥保管库,则可以将其存储为密码。密钥保管库密码是八位字节序列,每个序列的最大大小为25k字节。