【问题标题】:Offline revocation mode离线撤销模式
【发布时间】:2013-06-05 05:33:30
【问题描述】:

我的问题类似于this 问题。

我正在尝试仅使用本地 CRL 检查吊销列表。

我正在使用带有以下参数的 X509Chain.Build():

    var chainMachine = new X509Chain(true);
            chainMachine.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain;
            chainMachine.ChainPolicy.UrlRetrievalTimeout = TimeSpan.FromSeconds(30);
            chainMachine.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag;
            chainMachine.ChainPolicy.VerificationTime = DateTime.Now;
            chainMachine.ChainPolicy.RevocationMode = X509RevocationMode.Offline;

但我收到以下错误:

  1. RevocationStatusUnknown => 吊销功能无法检查证书的吊销。
  2. OfflineRevocation => 吊销功能无法检查证书的吊销,因为吊销服务器是 离线。

奇怪的是,一旦我尝试在线检查吊销列表(因此 CRL 将被更新),问题已解决。所以看起来一旦缓存中有任何内容,问题就无法再重现了。

我认为错误消息可能不正确,实际发生的情况是,当缓存为空时,会出现一些异常导致此消息弹出。 另一种选择是,也许有一些标志表明缓存是否已在某个时候更新,如果它从未更新过,它会尝试从外部服务器获取信息

谁能指出这个问题的原因是什么?

【问题讨论】:

  • 我也看到了同样的行为。它没有告诉我服务器离线,它只是说它无法检查撤销。自签名证书似乎不会发生这种情况。

标签: x509certificate2 certificate-revocation


【解决方案1】:

X509RevocationMode.None:不检查 CRL 或 OCSP。

X509RevocationMode.Offline:如果 CRL 被缓存并且仍然有效,则将其用于撤销。否则,如果证书应该已检查吊销(取决于 EntireChain/ExcludeRoot/EndCertificateOnly),请报告 OfflineVerification|RevocationStatusUnknown。 (如果他们的 nextUpdate 值建议,OCSP 响应也可能被缓存;但我不确定它是否这样做)。

X509RevocationMode.Online:如果证书中描述了 OCSP 端点,则执行 OCSP 检查。如果 OCSP 没有得出结论性的答案并且定义了 CRL 分发点,请检查 CRL 的缓存。如果有效,作为撤销的依据;否则下载 CRL 并缓存它。如果所有查找吊销状态的尝试都失败,请设置 RevocationStatusUnknown。

由于 CRL 过期,离线模式很棘手。即使您在一小时前刚刚提出在线请求,也不意味着现在离线可以工作。我能想到的最好的用途是让快乐的道路快一点;如果您收到除 RevocationStatusUnknown 或 OfflineRevocation 以外的任何错误,则认为链失败......但其中任何一种都意味着使用在线模式再次询问。

(可以通过http://referencesource.microsoft.com 确定,Offline 对应于 CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY,这在https://msdn.microsoft.com/en-us/library/windows/desktop/aa376078(v=vs.85).aspx 上的文档很少,但也许“仅检查缓存”部分更具启发性)

【讨论】:

  • 关于在线模式,OCSP 是否都像 CRL 一样被缓存?我认为/希望使用缓存的 OCSP。
  • @StealthRabbi 我想是的,如果它设置了 nextUpdate 字段;但我对 Crypt32 的黑盒和 OCSP 的观察较少。
猜你喜欢
  • 2011-12-29
  • 2015-03-06
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
  • 2017-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多