证书已部署为“Root CA” - > “中间CA” - > “结束证书”。如果我禁用“根CA”证书的所有目的,我是否能够使用结束证书。如何以编程方式检查状态。老实说,我不知道这些单选按钮在证书属性中的作用以及如何/在何处检查其效果?
通过“mmc.exe” - >禁用证书用途添加/删除管理单元 - >证书 - >本地机器 - >受信任的根证书颁发机构 - > ROOT CA,右键单击属性 - >选择禁用此证书的所有目的。
请帮忙。
答案 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