我正在使用azure密钥库来保护我们的密钥和机密,但我不确定如何使用使用.net sdk检索的密钥包。如何创建X509Certificate2对象?

最佳答案

在keyvault中导入/创建证书时,将创建3个实体:
证书-包含证书的所有相关详细信息,包括其公共部分(即公钥、有效期、指纹等)
secret-包含base64中的私钥(证书的私钥部分)
键-我不知道,但和这个线程无关。
您可以使用证书对象或机密对象创建X509Certificate2对象。
如果您希望X509Certificate2包含私钥,那么您当然需要获取机密实体的值并执行以下操作:

SecretBundle certificatePrivateKeySecretBundle =
    await keyVaultClient.GetSecretAsync(certificateIdentifierSecretPart);

byte[] privateKeyBytes = Convert.FromBase64String(certificatePrivateKeySecretBundle.Value);
X509Certificate2 certificateWithPrivateKey = new X509Certificate2(privateKeyBytes, (string) null, X509KeyStorageFlags.MachineKeySet);

certificateIdentifierSecretPart等于证书的机密部分路径:
https://<vault name>.vaults.azure.net/secrets/<certificate name>
注意/秘密/路径。

关于c# - 如何从Azure Key Vault KeyBundle创建X509Certificate2对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37033073/

10-10 16:50