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

时间:2012-12-14 16:16:01

标签: c# x509certificate

我正在尝试使用C#中的X509Chain验证证书尚未撤销。

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

返回状态:

  

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

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

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

1 个答案:

答案 0 :(得分:6)

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

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

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

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

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