gpt4 book ai didi

x509certificate2 - 离线撤销模式

转载 作者:行者123 更新时间:2023-12-04 08:33:03 38 4
gpt4 key购买 nike

我的问题类似于 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 => The revocation function is unable to check revocation for the certificate.
  2. OfflineRevocation => The Revocation function was unable to check revocation for the certificate because the revocation server is offline.


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

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

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

最佳答案

X509RevocationMode.None :不要检查 CRL 或 OCSP。

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

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

由于 CRL 过期,离线模式很棘手。即使您在一小时前才完成在线请求,也不意味着离线现在可以工作。我能想到的最好的用途是让快乐之路走得更快;并且如果您遇到除 RevocationStatusUnknown 或 OfflineRevocation 以外的任何错误,则认为链失败了……但是这两种方法中的任何一种都意味着在在线模式下再次询问。

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

关于x509certificate2 - 离线撤销模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17009020/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com