C# X509RevocationMode.Online在吊销证书验证中出现问题
我正在以联机模式验证证书吊销,但如果CRL已缓存在内存中,则不会命中CRL分发点中提到的url。我正在使用fiddler验证URL是否被访问。我正在遵循这些步骤C# X509RevocationMode.Online在吊销证书验证中出现问题,c#,certificate,x509certificate,digital-signature,x509certificate2,C#,Certificate,X509certificate,Digital Signature,X509certificate2,我正在以联机模式验证证书吊销,但如果CRL已缓存在内存中,则不会命中CRL分发点中提到的url。我正在使用fiddler验证URL是否被访问。我正在遵循这些步骤 操纵小提琴手 在X509RevocationMode.Online中启动证书验证 验证fiddler,未捕获CRL分发点中提到的url 通过命令certutil-urlcache crl delete 在X509RevocationMode.Online中启动证书验证 现在,小提琴手捕捉到了CRL分发点中提到的URL 从以上步骤可以清楚
X509RevocationMode.Online中启动证书验证
certutil-urlcache crl delete
X509RevocationMode.Online中启动证书验证
private void BuildCertificateChain(X509Certificate2 certificate)
{
string error = null;
X509Chain certificateChain = new X509Chain();
certificateChain.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain;
certificateChain.ChainPolicy.VerificationTime = DateTime.Now;
certificateChain.ChainPolicy.RevocationMode = X509RevocationMode.Online;
certificateChain.ChainPolicy.UrlRetrievalTimeout = new TimeSpan(0, 0, 15);
try
{
if (certificateChain.Build(certificate))
{
foreach (X509ChainElement element in certificateChain.ChainElements)
{
Trace.WriteLine(string.Format("Issuer = {0}\nSubject = {1}", element.Certificate.Issuer, element.Certificate.Subject));
element.Certificate.Verify();
}
}
else
{
error = string.Format("File {0} digital signature seems to be not valid due to a certificate in certificate chain being revoked. Revocation reasons are:\n", filename);
foreach (X509ChainStatus status in certificateChain.ChainStatus)
{
error += status.StatusInformation;
}
}
}
catch (Exception ex)
{
error = string.Format("Exception building certificate chain for executing application {0}. The error is {1}", _executingAppFileName, ex.Message);
}
if (!string.IsNullOrEmpty(error))
{
//SetError(error);
}
}
}
使用缓存版本而不重新检索CRL通常是一种特性,而不是bug 应该发生什么:
关于检查恶意软件的数字证书。谢谢您的回复。我读了更多关于CRL的文章,我的大部分疑问都很清楚。您的回答令人满意,但我想在这里提到一件事,我正在对可执行文件执行数字签名验证。您能再回答一件事吗?如果CRL被缓存并且CA在CRL下一个更新日期之前吊销了证书,将会发生什么。e、 g.假设CRl生效日期为5月1日,下一次更新日期为5月15日。我的系统已经缓存了此CRL,并且在5月9日证书被吊销,CA已更新其链接中的最新CRL。Re:正在检查CRL的可执行文件。真正的问题在于你是否信任exe的供应商。不要依赖于cert和CRL,它们可能会被坚定的敌人操纵。我建议典型的缓存长度是1天,而不是15天。因此,如果在发布新的CDL之前检索CDL,则第二天将检索更新的CDL。回复:CDL日期为1日,证书于2日撤销。直到15日,没有人会知道证书被吊销了。另外,很有可能证书应该更早被撤销…谢谢拉里。。。你的回答指导我解决了所有的疑问。记住要选择有用的答案,并“检查”回答你问题的最佳答案。别担心,欣赏是我的习惯。。。但让我澄清所有疑问。:)