【问题标题】:Online Revocation Checking Using Custom Root in X509Chain在 X509Chain 中使用自定义根进行在线吊销检查
【发布时间】:2019-12-17 21:50:19
【问题描述】:

我需要使用未存储在受信任的根 CA 存储中的根证书来验证叶证书。使用X509Chain 并将X509ChainPolicy.RevocationMode 设置为X509RevocationMode.NoCheck 并将X509ChainPolicy.VerificationFlags 设置为包含标志X509VerificationFlags.AllowUnknownCertificateAuthority 时,此操作非常有效。我使用 X509Chain.ChainPolicy.ExtraStore 将我的根证书提供给 X509Chain。

当我想检查叶证书的吊销状态时出现问题。叶证书提供 CRL 分发点,但在使用 X509RevocationMode.Online 时,我得到以下状态:X509ChainStatusFlags.RevocationStatusUnknownX509ChainStatusFlags.OfflineRevocation

如果我将根安装到受信任的根 CA 存储中,吊销检查就可以正常工作。但是,如前所述,我的应用程序不会将这些安装到证书存储中。

这是我目前尝试这样做的方式:

Dim certChain As New X509Chain
certChain.ChainPolicy.RevocationMode = X509RevocationMode.Online
certChain.ChainPolicy.RevocationFlag = X509RevocationFlag.EndCertificateOnly
certChain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllowUnknownCertificateAuthority Or X509VerificationFlags.IgnoreNotTimeValid
certChain.ChainPolicy.ExtraStore.Add(rootCertificate)

Dim blnValid As Boolean = certChain.Build(certificate)

感谢任何帮助。

【问题讨论】:

    标签: .net vb.net security x509certificate


    【解决方案1】:

    这在当前版本的 .NET 中是不可能的。

    已经为 .NET 5 编写了一项功能,但尚未发布允许这样做的功能,您可以添加

    certChain.ChainPolicy.TrustMode = X509ChainTrustMode.CustomRootTrust;
    certChain.ChainPolicy.CustomTrustStore.Add(rootCert);
    

    然后用指定的证书替换该链的根信任列表。

    但系统不会从不受信任的机构下载或从缓存中处理撤销。当前 .NET 的唯一选择是

    • 将您的证书注册为受信任的
    • 不关心撤销
    • 使用另一个链提供程序(P/调用操作系统库,或使用第三方库)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-15
      • 2019-04-23
      • 1970-01-01
      • 2019-08-15
      • 2021-03-31
      • 2016-11-13
      • 1970-01-01
      相关资源
      最近更新 更多