我需要使用未存储在受信任的根CA存储中的根证书来验证叶证书。在X509Chain
设置为X509ChainPolicy.RevocationMode
且X509RevocationMode.NoCheck
设置为包含标志X509ChainPolicy.VerificationFlags
的情况下,使用X509VerificationFlags.AllowUnknownCertificateAuthority
可以很好地工作。我使用X509Chain.ChainPolicy.ExtraStore
将我的根证书提供给X509Chain。
我想检查叶子证书的吊销状态时出现问题。叶子证书提供CRL分发点,但是使用X509RevocationMode.Online
时,我得到以下状态:X509ChainStatusFlags.RevocationStatusUnknown
和X509ChainStatusFlags.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中这是不可能的。
您已经添加了.NET 5的一项功能,但尚未发布,允许您这样做。
certChain.ChainPolicy.TrustMode = X509ChainTrustMode.CustomRootTrust;
certChain.ChainPolicy.CustomTrustStore.Add(rootCert);
然后用指定的证书替换该链的根信任列表。
但是系统不会从不受信任的授权机构下载或处理从高速缓存撤消的操作。当前.NET的唯一选项是