验证客户的证书

时间:2014-02-14 12:07:02

标签: c# ssl certificate x509certificate x509

我正在创建一个使用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。 我愿意采取任何其他方法来完成同样的任务。

1 个答案:

答案 0 :(得分:1)

您必须选择OnlineOffline

  • Online:始终尝试联系证书中指定的CDP或OCSP网址以获取CRL列表以检查撤销
  • Offline:尝试使用CRL的现有缓存副本

如果CDP或OCSP服务器没有响应,如果存在连接问题,则第一个选项可能很慢,等等。如果这个问题是永久性的,它甚至可能会失败。

对于大多数情况,我建议使用第二个选项。不使用CRL的缓存副本的唯一原因是最近有证书撤销,并且它们刚刚发布到CRL。此外,CRL有截止日期,如果已经过期,将强制获得新副本。

您还可以在使用offline选项启动进程之前清除CRL缓存。 Google it:有不同的选择。您需要使用certutil.exe

相关问题