【发布时间】:2019-12-17 21:50:19
【问题描述】:
我需要使用未存储在受信任的根 CA 存储中的根证书来验证叶证书。使用X509Chain 并将X509ChainPolicy.RevocationMode 设置为X509RevocationMode.NoCheck 并将X509ChainPolicy.VerificationFlags 设置为包含标志X509VerificationFlags.AllowUnknownCertificateAuthority 时,此操作非常有效。我使用 X509Chain.ChainPolicy.ExtraStore 将我的根证书提供给 X509Chain。
当我想检查叶证书的吊销状态时出现问题。叶证书提供 CRL 分发点,但在使用 X509RevocationMode.Online 时,我得到以下状态:X509ChainStatusFlags.RevocationStatusUnknown 和 X509ChainStatusFlags.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