gpt4 book ai didi

c# - 如何验证 RemoteCertificateValidationCallback 中的链?

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:46 26 4
gpt4 key购买 nike

我有以下代码尝试根据私有(private) PKI 中的 CA 验证服务器证书。它与 ServicePointManagerRemoteCertificateValidationCallback 一起使用:

static bool VerifyServerCertificate(object sender, X509Certificate certificate,
X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
X509Certificate2 ca = new X509Certificate2();
ca.Import("ca-rsa-cert.der");

X509Chain chain2 = new X509Chain();
chain2.ChainPolicy.ExtraStore.Add(ca);

// Check all properties
chain2.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag;

// This setup does not have revocation information
chain2.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;

chain2.Build(new X509Certificate2(certificate));
if (chain2.ChainStatus.Length == 0)
{
return true;
}

bool result = chain2.ChainStatus[0].Status == X509ChainStatusFlags.NoError;
Debug.Assert(result == true);

return result;
}

问题是 chain2.ChainStatus.Length 始终为 0。

如果我将 X509RevocationMode 设置为 X509RevocationMode.Online,则 ChainStatus.Length == 1 并且状态设置为 X509ChainStatusFlags .RevocationStatusUnknown。 (这是意料之中的,因为测试装置中没有撤销)。

问题:长度为 0 的 ChainStatus.Length 是什么意思?

问题:如果成功了,为什么不使用X509ChainStatusFlags.NoError

最佳答案

如果 ChainStatuts.Lenght = 0; 这意味着您的链已正确构建。您还可以使用 Verify() 函数检查结果。它使用在线吊销模式并使用标准策略验证。

关于c# - 如何验证 RemoteCertificateValidationCallback 中的链?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22518525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com