ASP.NET和底层连接已关闭:无法为SSL / TLS安全通道建立信任关系
我正在使用公共Root权威证书文件X509制作httpwebrequest.我只有公钥,而不是私钥.从控制台应用程序一切正常,但它不适用于asp.net应用程序.我收到错误:“底层连接已关闭:无法为SSL / TLS安全通道建立信任关系.”
禁用验证的选项不是一个选项. 这是代码 HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://xxxxxxx/gateway.aspx"); string post = "abcdef"; req.ContentType = "application/x-www-form-urlencoded"; req.Method = "POST"; req.ContentLength = post.Length; var cert = System.Security.Cryptography.X509Certificates.X509Certificate.CreateFromCertFile(@"c:temproot.cer"); req.ClientCertificates.Add(cert); StreamWriter stOut = new StreamWriter(req.GetRequestStream(),System.Text.Encoding.ASCII); stOut.Write(post.ToString()); stOut.Close(); HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 这是System.Net和System.Net套接字的系统日志. System.Net信息:0:[5928] SecureChannel#8106798 – 无法将证书链构建到受信任的根颁发机构. System.Net信息:0:[5928] SecureChannel#8106798 – 远程证书被用户验证为无效. System.Net.Sockets详细:0:[5928]套接字#7486778 :: Dispose() System.Net错误:0:[5928] HttpWebRequest中的异常#51319244 :: – 底层连接已关闭:无法为SSL / TLS安全通道建立信任关系. System.Net错误:0:[5928] HttpWebRequest中的异常#51319244 :: EndGetRequestStream – 底层连接已关闭:无法为SSL / TLS安全通道建立信任关系. 更多信息 如果我使用此代码(来自CodeGuru) public static bool ValidateServerCertificate(object sender,X509Certificate certificate,X509Chain chain,SslPolicyErrors sslPolicyErrors) { if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateChainErrors) { return false; } else if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateNameMismatch) { System.Security.Policy.Zone z = System.Security.Policy.Zone.CreateFromUrl (((HttpWebRequest)sender).RequestUri.ToString()); if (z.SecurityZone == System.Security.SecurityZone.Intranet || z.SecurityZone == System.Security.SecurityZone.MyComputer) { return true; } return false; } return true; } 我最终得到错误:
解决方法
将此问题添加到Application_Start可以解决此问题:
ServicePointManager.ServerCertificateValidationCallback += (sender,certificate,chain,sslPolicyErrors) => true; 它基本上允许服务器与其证书不匹配. 资源: http://www.ben-morris.com/asp-net-web-services-and-ssl-certificates-establishing-a-trust-relationship 注意:建议不要将此解决方法用于生产 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net mvc中的用户登录验证过滤器
- asp.net-mvc – 如何在升级到ASP.NET MVC 5和Web API 2后解
- asp.net-mvc – 数据模型需要两个属性之一
- ASP.NET第一次访问慢的解决方法(MVC,Web Api)
- 对ASP.NET Web API的所有请求返回404错误
- .net – 将RouteValueDictionary转换为匿名对象的快速方法?
- asp.net-mvc – 在ASP.NET MVC 4中的用户控制等效
- asp.net-mvc – 文件输入MVC 3所需的客户端验证
- ASP.NET和会话 – 新的浏览器实例与新的浏览器窗口
- asp.net – MVC动态页权限使用授权属性?
- asp.net – “更新/取消”按钮不会出现在Templat
- 使用ASP.NET webAPI上载文件(最大文件大小为10Mb
- 这算是ASP.NET MVC的一个大BUG吗?
- 在一个空ASP.NET Web项目上创建一个ASP.NET Web
- asp.net-web-api – 为什么Microsoft.Owin.Host.
- asp.net-mvc – MVC Ajax.BeginForm替换奇怪的行
- asp.net – Application_Start和Application_OnS
- asp.net-mvc – 为什么我要将WCF与MVC一起使用?
- asp.net – .net Drawing.Graphics.FromImage()返
- asp.net – 创建一个包含两列值的VB.NET数组?