4

我正在尝试使用 C# 中的 X509Chain 验证证书是否已被吊销。

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

这将返回以下状态:

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

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

如何解决此问题或至少更好地了解原因(例如,如何找出它在哪里检查 CRL?)

4

1 回答 1

7

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

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

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

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

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

于 2012-12-14T16:34:34.827 回答