【发布时间】:2014-02-14 12:07:01
【问题描述】:
我正在创建一个使用 EWS(Exchange Web 服务)来移动邮件的应用程序。我可以绕过证书验证来运行我的应用程序。我使用此代码绕过证书验证:
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。 我愿意接受任何其他方法来完成相同的任务。
【问题讨论】:
-
看起来该示例错误或已过时。 X509RevocationMode 枚举不能用作 Flags ,只需选择三个值中的 1 个即可。
-
你能不能请我做这件事。
-
X509RevocationMode.Online | X509RevocationMode.Offline- 选择其中一个。如果您选择X509RevocationMode.Online,那么您可能会在下载大型 CRL 时拒绝您的应用程序(或尝试下载丢失的 CRL)。 -
另见Verify Remote Server X509Certificate using CA Certificate File。它有一个服务器验证的工作示例,包括从文件系统加载 CA。
标签: c# ssl certificate x509certificate x509