首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误: C#基础连接已关闭:无法为SSL/TLS安全通道建立信任关系

错误: C#基础连接已关闭:无法为SSL/TLS安全通道建立信任关系
EN

Stack Overflow用户
提问于 2012-06-27 09:01:44
回答 3查看 111.4K关注 0票数 39

我正试图通过SSL提出一个请求。证书已经安装在机器上,并通过浏览器工作。

我利用这一请求:

代码语言:javascript
运行
复制
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] data = encoding.GetBytes(request.Content.OuterXml.ToString());
string password = "XXXX";
X509Certificate2 cert = new X509Certificate2("c:\\zzzz.p12", password);
string key = cert.GetPublicKeyString();
string certData = Encoding.ASCII.GetString(cert.Export(X509ContentType.Cert));

Uri uri = new Uri(request.Url);
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(uri);
myRequest.Credentials = new NetworkCredential(request.User, request.Password.ToString());
myRequest.Method = "PUT";
myRequest.ContentType = request.ContentType;
myRequest.ContentLength = data.Length;
myRequest.ClientCertificates.Add(cert);

Stream newStream = myRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();

System.IO.StreamReader st = new StreamReader(((HttpWebResponse)myRequest.GetResponse()).GetResponseStream());

使用这段代码,我得到了以下错误:

基础连接已关闭:无法为SSL/TLS安全通道建立信任关系。-> System.Security.Authentication.AuthenticationException:根据验证过程远程证书无效。

有什么问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-28 08:57:51

我用这个解决了问题:

代码语言:javascript
运行
复制
ServicePointManager.ServerCertificateValidationCallback = new        
RemoteCertificateValidationCallback
(
   delegate { return true; }
);
票数 105
EN

Stack Overflow用户

发布于 2016-12-01 11:07:30

确保您的证书是正确可信的。根证书是否已添加到正确的证书存储区(本地机器上的可信根CA)?

当将(自签名的)证书的根证书添加到当前用户的受信任根CA时,我遇到了此错误。将根证书移动到本地机器上的根CA存储解决了我的问题。

票数 2
EN

Stack Overflow用户

发布于 2012-06-27 09:10:39

这是客户代码对吧?你正在访问一个HTTPS url,不是吗?我认为问题在于服务器证书,客户端TLS堆栈无法验证该证书。当您通过浏览器连接到该URL时,它是否正常工作,还是看到了证书不匹配的警告?

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11222759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档