【发布时间】:2016-05-07 15:33:34
【问题描述】:
有谁知道如何让 HttpClient 与仅支持 TLS 1.2 的站点一起工作。我已通过 SSL Labs https://www.ssllabs.com/ssltest/analyze.html?d=sandbox.paypal.com 验证,paypal 已在其沙盒网站上关闭了除 TLS 1.2 之外的所有功能。
当我运行以下代码时,我收到一条异常消息“根据验证过程,远程证书无效。”
var client = new HttpClient();
var content = client
.GetAsync("https://sandbox.paypal.com/")
.Result;
【问题讨论】:
-
您使用的是什么版本的 .NET? 4.5 增加了对 TLS 1.2 的支持,并且会自动启动。 msdn.microsoft.com/en-us/library/…
-
你是对的,马特。我实际上在 4.6 上,如果我检查 System.Net.ServicePointManager.SecurityProtocol,它设置正确。我的问题是 sandbox.paypal.com 上的证书抛出了一个错误,我没有在其他仅 TLS1.2 的网站上获得,从而混淆了我得到的结果。
-
另外值得注意的是,默认的 SecurityProtocol 是 TLS1|SSL3 直到 .NET 4.5.2。直到 4.6 才默认为 TLS11|TLS12。