C# 如何绕过Windows CE中的SSL证书错误

C# 如何绕过Windows CE中的SSL证书错误,c#,.net,windows-ce,C#,.net,Windows Ce,我想绕过Windows CE中web服务的SSL证书错误 有许多针对.net Windows应用程序的解决方案,例如 但在windows ce中,我无法导入ServicePointManager库 那么,在Windows CE中还有其他方法可以做到这一点吗?实际上,您也可以在CF中使用ServicePointManager。 首先,创建一个接受所有内容的策略,如下所示: public class TrustAllCertificatePolicy : ICertificatePolicy {

我想绕过Windows CE中web服务的SSL证书错误

有许多针对.net Windows应用程序的解决方案,例如

但在windows ce中,我无法导入ServicePointManager库


那么,在Windows CE中还有其他方法可以做到这一点吗?

实际上,您也可以在CF中使用ServicePointManager。 首先,创建一个接受所有内容的策略,如下所示:

public class TrustAllCertificatePolicy : ICertificatePolicy
{
    public TrustAllCertificatePolicy()
    {
    }

    public bool CheckValidationResult(ServicePoint sp,
        X509Certificate cert, WebRequest req, int problem)
    {
        return true;
    }
}
要使用此类,您应该在每个应用程序会话(每次启动应用程序时;每次建立SSL连接时将使用TrustAllCertificatePolicy实例)和发出任何Web请求之前(最好在应用程序启动时)运行以下代码一次

此解决方案相当于对通常出现在浏览器中的任何安全消息回答“是”


更多信息

这使得https的使用变得无关紧要。不要这样做。这就像对“你想被黑客攻击吗”的问题回答“是”。是的,我同意。因此,我在文章中最后一句话。尽管有时,您无法控制您试图使用的服务(为了给它一个有效的证书),但您必须使用它:)当然,您可以随时对此进行微调,以仅接受某些无效的证书,我将此留给OPIt,这并不会使HTTPS变得毫不相关。当你打开连接时,它会让你对中间人的攻击敞开大门,但远比把一切都清除干净要好得多。此外,Windows CE似乎不再正确验证许多证书,没有留下其他选项。
System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();