使用X509Chain中的自定义根进行联机吊销检查

问题描述 投票:1回答:1

我需要使用未存储在受信任的根CA存储中的根证书来验证叶证书。在X509Chain设置为X509ChainPolicy.RevocationModeX509RevocationMode.NoCheck设置为包含标志X509ChainPolicy.VerificationFlags的情况下,使用X509VerificationFlags.AllowUnknownCertificateAuthority可以很好地工作。我使用X509Chain.ChainPolicy.ExtraStore将我的根证书提供给X509Chain。

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

如果我将根安装到Trusted Root 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个回答
0
投票

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

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

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

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

但是系统不会从不受信任的授权机构下载或处理从高速缓存撤消的操作。当前.NET的唯一选项是

  • 将证书注册为受信任的人
  • 不在乎撤销
  • 使用另一个链提供程序(P /调用OS库或使用第三方库)。
© www.soinside.com 2019 - 2024. All rights reserved.