我已经存储了一个X509证书Azure KeyVault(在Keys下)。Azure KeyVault GetKeyAsync返回RSAParameters而不是X509Certificate
当我使用keyVaultClient.GetKeyAsync(keyUrl)
时,它返回一个key属性的keyBundle。
该Keys
财产有一个ToRSA()
函数。
从RSA对象中,我可以创建一个XML字符串,但格式不是公钥的PEM格式,我可以在X509Certificate2
构造函数中将其用作rawdata。
我无法在.NET框架中找到任何方法从RSA xml创建X509Certificate2。
我真的需要一个X509Certificate2
对象来加密一个封装的Cms对象。 CmsRecipient
要求在其构造函数中使用X509Certificate
。
有没有办法将RSA
(AsymmetricAlgorithm)转换为X509Certificate2
对象?
解决方法可能是将证书存储在秘密下。然后关键的Vault API似乎给了我X509Certificate rawdata,但我想只存储一次相同的证书。我必须拥有它才能够解开密钥(用于Cms对象解密)
我刚刚注意到,那也是 - 不可能以其他方式去做。 client.GetSecretAsync(secretUrl)提供了一个X509Certificate原始数据字符串(作为base64)。它的一个可怜的钥匙保险箱钥匙只返回RSAParameters。由于unwrap原语(解密Cms对象),我需要在Keys下有证书。我可能会去每个证书两个商店 - 钥匙为“私人”证书和文件系统与公共密钥数据(pem)。从长远来看,它可能更便宜。 谢谢你的回答,乍得 – Frode