【发布时间】:2017-05-26 21:01:06
【问题描述】:
我正在尝试使用 HttpClientHandler.ServerCertificateCustomValidationCallback 验证客户端证书。我已经用我的ChainPolicy 参数构建了我的x509chain。
我在本地有我的 CRL (.pem) 文件,我想将其添加到吊销流程中。
我正在考虑做类似CRL validation 之类的操作,将带有distributionPoint oid 的X509Extension 导入我的X509Extension,但我无法理解它。
这是我的一段回调代码
private static Func<HttpRequestMessage, X509Certificate2, X509Chain, SslPolicyErrors, bool>
ServerCertificateCustomValidationCallback()
{
return (sender, cert, chain, sslPolicyErrors) =>
{
X509Certificate2 ca = new X509Certificate2(@"pathToCa\\ca.crt");
X509Chain chai = new X509Chain();
chai.ChainPolicy.ExtraStore.Add(ca);
chai.ChainPolicy.RevocationFlag = X509RevocationFlag.ExcludeRoot;
chai.ChainPolicy.RevocationMode = X509RevocationMode.Online;
chai.ChainPolicy.VerificationFlags = X509VerificationFlags.AllFlags;
chai.ChainPolicy.VerificationTime = DateTime.Now;
try
{
if (!chai.Build(cert))
{
return false;
}
foreach (X509ChainStatus status in chai.ChainStatus)
{
if (status.Status == X509ChainStatusFlags.UntrustedRoot) continue;
if (status.Status == X509ChainStatusFlags.OfflineRevocation) continue;
if (status.Status == X509ChainStatusFlags.RevocationStatusUnknown) continue;
return false;
}
}
catch (Exception e)
{
throw e;
}
return true;
};
}
感谢您的帮助和澄清
【问题讨论】:
-
有什么问题?
-
@Mike_G 抱歉,这是我的第一篇文章。如何在撤销过程中添加我的本地 CRL 文件?
标签: c# security asp.net-core certificate certificate-revocation