撤销function无法检查证书的撤销

我试图在C#中使用X509Chainvalidation证书尚未被撤销。

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

这将返回以下状态:

撤销function无法检查证书的撤销

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

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

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

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

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

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

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