我正在创建一个使用EWS(Exchange Web Service)移动邮件的应用程序。我可以通过绕过证书验证来运行我的应用程序。我使用此代码绕过证书验证:
ServicePointManager.ServerCertificateValidationCallback =
delegate(object s, X509Certificate certificate,
X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
};
验证我跟随this post的证书,这对于查找证书和检查证书非常有帮助。
使用该帖子 ValidateCert 方法时抛出异常
chain.ChainPolicy.RevocationMode = X509RevocationMode.Online | X509RevocationMode.Offline;
例外是:
System.ArgumentException: Illegal enum value: value.
at
System.Security.Cryptography.X509Certificates.X509ChainPolicy.
set_RevocationMode(X509RevocationMode value)
我正在使用Visual Studio 2013。 我愿意采取任何其他方法来完成同样的任务。
答案 0 :(得分:1)
您必须选择Online
或Offline
:
Online
:始终尝试联系证书中指定的CDP或OCSP网址以获取CRL列表以检查撤销Offline
:尝试使用CRL的现有缓存副本如果CDP或OCSP服务器没有响应,如果存在连接问题,则第一个选项可能很慢,等等。如果这个问题是永久性的,它甚至可能会失败。
对于大多数情况,我建议使用第二个选项。不使用CRL的缓存副本的唯一原因是最近有证书撤销,并且它们刚刚发布到CRL。此外,CRL有截止日期,如果已经过期,将强制获得新副本。
您还可以在使用offline选项启动进程之前清除CRL缓存。 Google it:有不同的选择。您需要使用certutil.exe
。