我设置了这个链验证:
var chain = new X509Chain();
chain.ChainPolicy.TrustMode = X509ChainTrustMode.CustomRootTrust;
chain.ChainPolicy.CustomTrustStore.Add(_options.CA);
chain.ChainPolicy.CustomTrustStore.Add(_options.Intermediate);
我想打电话给哪里
chain.Build(clientCertificate);
在客户端证书上。我需要这样做:
chain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;
让它发挥作用。我知道我的自定义存储中的证书指向有效的 CRL。我什至可以下载它,但是当我下载它时,我可以看到 CRL 的下一个日期已经过去了(2018 年 1 月),在我看来,这使得 CRL 无效。
我的两个问题是:
RevocationMode
设置为 NoCheck
以外的内容的证书并且 CRL 具有 Next date
< DateTime.UtcNow
(即:Next date
是过去的内容)时,是否会无法通过该证书的吊销检查背景?我正在使用
.NET 7
(在 Windows 和 Linux 上都尝试过上述操作)。
当我验证证书时,RevitationMode 设置为 NoCheck 以外的值,并且 CRL 有下一个日期 < DateTime.UtcNow (that is: Next date is in the past), will it fail the revocation check on that background?
不。在这种情况下,证书链引擎将跳过任何吊销检查。
我使用自定义根存储有关系吗?或者只有当我在 Windows 中使用证书存储时撤销才有效?
只要自定义存储受到链接引擎的信任(基于您的代码)就没有关系。