撤销功能无法检查证书的撤销

Fen*_*ton 3 c# x509certificate

我试图验证证书尚未在C#中使用X509Chain撤销.

X509Chain chain = new X509Chain();
chain.ChainPolicy.RevocationMode = X509RevocationMode.Online;
chain.ChainPolicy.RevocationFlag = X509RevocationFlag.EndCertificateOnly;
chain.Build(certificate);
Run Code Online (Sandbox Code Playgroud)

这将返回以下状态:

撤销功能无法检查证书的撤销

我想检查已撤销的证书,而不仅仅是关闭错误.

如何解决此问题或至少更好地了解原因(例如,如何找出检查CRL的位置?)

Eug*_*its 6

撤销检查包括检查CRL中的证书状态以及使用OCSP进行在线状态检查.文档表明.NET只检查CRL,但"在线"可能意味着应该下载CRL.在这种情况下,您的错误可能意味着找不到CRL位置(证书中不存在)或无法访问.

要采取的第一步是检查证书是否包含CRL位置.您可以在证书属性中看到这一点 - 那里有一个CRL分发点扩展.

如果存在CRL位置并且它指向HTTP/HTTPS URL,则可以检查该URL以查看它是否可访问.

不幸的是,虽然这些步骤可以自动化,但它们不会涵盖任何问题的根源 - CRL可能格式不正确或服务器可能不返回CRL(例如,错误响应)或CRL上的签名无效.因此,上述步骤将仅提供有关该问题的基本信息.

我不知道.NET是否能够产生更有意义的故障描述.在我们的组件(SecureBlackbox)中,我们提供了有关故障的更多详细信息,尽管存在关于此主题的广泛的常见问题解答文章,但这个问题仍然是我们经常在技术支持中获得的问题.