C#检查X509Certificate是否因一个/所有目的而被禁用

时间:2017-09-19 06:06:49

标签: c# x509certificate2

证书已部署为“Root CA” - > “中间CA” - > “结束证书”。如果我禁用“根CA”证书的所有目的,我是否能够使用结束证书。如何以编程方式检查状态。老实说,我不知道这些单选按钮在证书属性中的作用以及如何/在何处检查其效果?

通过“mmc.exe” - >禁用证书用途添加/删除管理单元 - >证书 - >本地机器 - >受信任的根证书颁发机构 - > ROOT CA,右键单击属性 - >选择禁用此证书的所有目的。

请帮忙。

1 个答案:

答案 0 :(得分:1)

  

我是否可以使用结束证书

如果应用程序要求证书链引擎验证特定EKU OID的链,您将看到返回错误(CERT_E_WRONG_USAGE)并且证书无效。在某些情况下,应用程序不需要通过整个链的特定EKU有效性,并查看指定的EKU是否在验证中的证书中显示(例如,在验证OCSP签名证书时)。在这种情况下,这些设置不会影响证书验证。

  

如何/在哪里检查其效果?

如果要以编程方式读取这些设置,则必须使用一些互操作并调用CertGetCertificateContextProperty本机函数并将CERT_ENHKEY_USAGE_PROP_ID作为PropID参数的参数传递。我没有c#代码,但前段时间我发布了一个PowerShell代码,它读取了这些属性:How to retrieve certificate purposes property with CryptoAPI and PowerShell