我正在尝试用C#代码生成X509证书(使用X509Certificate2
类(,并将它们上传到Azure密钥库。
我发现,如果我的证书包含标志X509KeyUsageFlags.KeyEncipherment
,保管库将拒绝证书,并显示以下错误消息:
不支持的密钥操作:"wrapKey"unwrapKey";。支持的值是";符号"验证";。
有人知道该怎么办吗?当然,我可以从我生成的证书中删除该标志,但我想了解Azure拒绝它的原因。当证书包含该标志时,是否可以将证书上载到Azure密钥库?
我看了这个文档页面,但它并没有告诉我什么:https://learn.microsoft.com/en-us/azure/key-vault/keys/about-keys-details
(这是我之前问题的更具体的后续行动。(
•您遇到此问题是因为此x509.pem证书中的密钥格式不正确,并且未与证书组合。也就是说,您正在导入的证书类型不应该以base64编码字节的形式包含其信息。它应该是原始形式。
因此,该错误表示您尝试导入的证书密钥将用于对应用程序内容进行签名和验证,并且使用该证书的应用程序将使用证书密钥在本地对数据进行散列。因此,证书密钥本身不应该是其他不可接受的形式。此外,您遇到的错误可能不支持密钥生成算法。
•因此,如果您正在导入PEM格式的证书(无论是X509证书(,则";contentType";应该是";application/x-pem-file";类型value参数将只是PEM文件的原始文本内容,不需要使用base64编码的字节,因为PEM证书已经是文本格式,所以不需要base64编码。因此,证书的私钥应该采用与证书内容加密算法相同的格式。它不需要被屏蔽或转换为另一种格式,并且应该与证书本身相结合。
有关更多信息,请参阅以下链接:-
https://learn.microsoft.com/en-us/azure/key-vault/certificates/certificate-scenarios#formats-我们支持
https://learn.microsoft.com/en-us/answers/questions/258583/import-certificate-api-for-azure-key-vault.html