我有一个非常简单的Web请求与RestSharp:
var client = new RestClient("https://website.net");
var request = new RestRequest("/process", Method.GET);
request.AddParameter("cmd", "execute");
IRestResponse response = client.Execute(request);
var content = response.Content;
Console.WriteLine("Response: " + content);
这将返回错误消息:
The request was aborted: Could not create SSL/TLS secure channel
三件事:
>我通过浏览器得到了我期望的响应,
>我得到了Postman所期待的回应,
>此请求被发送到测试环境,但我可以将其发送到生产环境,该环境具有非常相似的地址,并获得我期望的响应,
>我很肯定它在今天之前有效.
他们的证书使用的是带有AES 128的TLS 1.2,因此它与RC4引起的错误无关.
这是在Visual Studio 2015中的本地Win 10计算机上,其目标框架为.NET 4.5.2.
为什么我会收到此错误?
编辑:
通过更改我的代码以使用基本System.Net和WebRequest类并添加行:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
从here建议,它的工作原理.所以我猜RestSharp出于某种原因使用了不正确的协议?
解决方法:
在.NET 4.5中,TLS 1.2可用但默认情况下未启用.
所以是的,如果你需要1.2,你需要以某种方式为.NET运行时指定它.
供参考:
在.NET 4.7中,.NET将使用操作系统的默认SSL / TLS版本(大多数现代操作系统将默认使用TLS 1.2)
其他好的SO答案:
Default SecurityProtocol in .NET 4.5