我有一个简单的Web服务调用,由.NET(C#)2.0 Windows应用程序经过Visual Studio生成的Web服务代理生成,用于也用C#(2.0)编写的Web服务。 这已经工做了几年,而且在它运行的十几个地方继续这样作。 安全
新站点的新安装遇到问题。 尝试调用Web服务时,它失败并显示如下消息: 服务器
没法为SSL / TLS安全通道创建信任关系 网络
Web服务的URL使用SSL(https://) - 但这已经在不少其余位置工做了很长时间(而且仍在继续)。 dom
我在哪里看? 这多是Windows和.NET之间的安全问题吗? 若是是这样,我在哪里创建信任关系? 我迷路了! 测试
卢克写了一篇关于这篇文章的至关不错的文章..很是直截了当..试一试 url
卢克的解决方案 spa
缘由(引用他的文章(减去诅咒))“..上面代码的问题是,若是你的证书无效,它就不起做用。为何我要发布到一个有无效SSL证书的网页呢?由于我很便宜并且我不想支付Verisign或者其余** - * s用于个人测试盒的证书,因此我本身签了。当我发出请求时,我获得了一个可爱的例外: 代理
System.Net.WebException 底层链接已关闭。 没法与远程服务器创建信任关系。 code
我不了解你,但对我来讲,异常看起来像是因为个人代码中的一个愚蠢的错误致使POST失败。 因此我一直在搜索,调整和作各类奇怪的事情。 只有在我搜索了***以后,才发现遇到无效SSL证书后的默认行为是抛出这个异常。 ..” ssl
我刚遇到这个问题。 个人决心是经过手动同步到时间服务器来更新系统时间。 为此,您能够:
Adjust Date/Time
Internet Time
选项卡 Change Settings
Update Now
在个人状况下,这是正确同步因此我必须屡次点击它才能正确更新。 若是它继续不正确地更新,您甚至能够尝试使用服务器下拉列表中的其余时间服务器。
我我的最喜欢如下解决方案:
using System.Security.Cryptography.X509Certificates; using System.Net.Security;
...而后在您请求获取错误以前,请执行如下操做
System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
在咨询了Luke的解决方案以后找到了这个
很是简单的“全能”解决方案是这样的:
System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
sebastian-castaldi的解决方案更为详细。
我在使用url的网络服务器上运行此错误,例如:
a.b.domain.com
但它没有证书,因此我获得了一个名为的DNS
a_b.domain.com
只是在这里提示这个解决方案,由于这在谷歌中名列前茅。