【发布时间】:2019-07-29 13:35:20
【问题描述】:
在我的 C# 项目中,我将 RemoteCertificateValidationCallback 委托的自定义实现传递给 SslStream。然后它用于验证服务器证书。自定义实现检查默认实现已设置的 sslPolicyErrors 标志,并根据结果调用自定义逻辑。默认实现为几种类型的证书问题设置标志,例如不匹配的主题名称、不完整的证书链或证书是否过期。 我的问题:我能否以任何方式从 RemoteCertificateValidationCallback 的默认实现的结果中推断出证书已被吊销(即在任何类型的 CRL 中列出)?或者我是否需要将自定义逻辑添加到我自己的 RemoteCertificateValidationCallback 实现中以进行吊销检查?
换句话说,在下面的示例代码中,如果证书被吊销,这是否会以任何方式反映在sslPolicyErrors 标志、certificate 对象或chain 对象中?还是我必须为撤销检查添加额外的逻辑?
RemoteCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) =>
{
if (sslPolicyErrors == SslPolicyErrors.None)
{
return true;
}
else if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateNameMismatch)
{
// Custom check by additional data available for the certificate...
}
else
{
return false;
}
}
【问题讨论】:
-
How to verify chain in RemoteCertificateValidationCallback? 可能重复我相信您需要设置
ChainPolicy.VerificationFlags和ChainPolicy.RevocationMode以选择加入各种检查。另请参阅ChainPolicy.RevocationMode、X509RevocationMode.Online和X509RevocationMode.Offline。
标签: c# x509 certificate-revocation