如何将公钥证书(.cer文件)存储在Azure密钥库中
问题描述:
如何将公钥(.cer)文件上传或存储在azure keyvault中。从keyvault面板中,当我尝试上传任何.cer文件的位置时,它会给出错误信息,该文件适用于.pfx文件。如何将公钥证书(.cer文件)存储在Azure密钥库中
答
您应该考虑Key Vault是否适合您的方案。公钥(本质上)不是机密数据,你不需要一个安全的地方来存储它。您可以为其使用通用存储服务。
如果您仍然需要使用密钥保管库,则可以将其作为秘密存储。密钥库秘密是八位字节序列,每个字节的最大大小为25k字节。
答
加载公钥证书
Azure Key Vault Explorer可加载公钥证书(.CER文件)。
证书使用该应用程序使用的“标准”格式作为密钥存储在密钥保管库中(因为.cer文件本质上不受Azure密钥保管库支持)。
访问公钥证书
一旦你已经装载公钥到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;
}