如何将公钥证书(.cer文件)存储在Azure密钥库中

问题描述:

如何将公钥(.cer)文件上传或存储在azure keyvault中。从keyvault面板中,当我尝试上传任何.cer文件的位置时,它会给出错误信息,该文件适用于.pfx文件。如何将公钥证书(.cer文件)存储在Azure密钥库中

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

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

加载公钥证书

Azure Key Vault Explorer可加载公钥证书(.CER文件)。

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

Example public key cert as stored by 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; 
}