当Azure密钥库显示一个或多个X.509属性无效时,如何调试我的证书有什么问题? [英] When an Azure key vault says "one or more x.509 properties are invalid", how can I debug what is wrong with my certificate?

查看:13
本文介绍了当Azure密钥库显示一个或多个X.509属性无效时,如何调试我的证书有什么问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试用C#代码生成X509证书(使用类X509cerficate2),并将这些证书上载到Azure密钥库。当我尝试上载它们(以编程方式或通过浏览器中的Azure门户)时,我收到以下错误消息:

指定的X.509证书内容无效。错误:一个或多个X.509属性无效。

如何调试我的证书生成有什么问题?是否记录了哪些X509属性的组合是可接受的?如果是,我可以在哪里读到有关它的信息?

certutil -dump foo.pfx的输出:

> certutil -dump E:RavenCertificates	est2.pfx
Enter PFX password:
================ Certificate 0 ================
================ Begin Nesting Level 1 ================
Element 0:
Serial Number: 86ae932f199f419115e8087f3f0cb6df747bd2adf966d46aab194f4283849635
Issuer: CN=intermediate CA
NotBefore: 24-01-2022 11:22
NotAfter: 25-01-2022 11:22
Subject: O=foo, CN=bar
Non-root Certificate
Cert Hash(sha1): a700464f1708cec627eabcd007ef574d1f0fc140
----------------  End Nesting Level 1  ----------------
Provider = Microsoft Software Key Storage Provider
Private key is NOT plain text exportable
Signature test passed
CertUtil: -dump command completed successfully.

推荐答案

在我的案例中,结果是两件事:

  1. 序列号。我使用RandomNumberGenerator.GetBytes(32)生成序列号,这显然很糟糕。如果我这样做,保险库会更开心Guid.NewGuid().ToByteArray()
  2. 标志(枚举X509KeyUsageFlags)。我测试了几种标志组合,结果是只要我使用标志X509KeyUsageFlags.KeyEncipherment,保管库就会拒绝证书。

我不知道为什么。我假设如果您使用KeyEncipherment标志,证书需要遵守其他一些不变量。

在任何情况下,当我修复序列号并删除此标志时,保管库似乎接受我的证书。

如果我只修复了序列号,但保留了KeyEncipherment标志,则会收到以下错误消息:

不支持的按键操作:";wrapKey";,";unwrapKey";。支持的值为&Quot;Sign&Quot;、&Quot;Verify&Quot;。

这篇关于当Azure密钥库显示一个或多个X.509属性无效时,如何调试我的证书有什么问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆