[英]SSL connection could not be established
作为自动化测试的一部分,我在发送 HTTP 请求时遇到问题,我想检查 URL 的状态代码。 当我发送请求时,我有一个例外:
System.AggregateException: '发生一个或多个错误。 (无法建立 SSL 连接,请参阅内部异常。)'
内部例外是:
HttpRequestException: 无法建立 SSL 连接,请参阅内部异常。
IOException:无法从传输连接读取数据:远程主机强制关闭现有连接。
SocketException: 现有连接被远程主机强行关闭。
我的代码:
public HttpStatusCode SendRequest(string _url)
{
SetUrl(_url);
HttpClientHandler clientHandler = new HttpClientHandler();
clientHandler.ServerCertificateCustomValidationCallback += (sender, cert, chain, sslPolicyErrors) => { return true; };
clientHandler.SslProtocols = SslProtocols.Tls;
HttpClient client = new HttpClient(clientHandler);
var response = client.GetAsync(Url).Result;
StatusCode = response.StatusCode;
return StatusCode;
}
先感谢您 !
远程主机确实(理所当然地)不接受您要使用已弃用的 TLS 1.0 进行连接。
指定 .Tls12 或 .Tls13。
正如@CodeCaster 已经提到的: SslProtocols.Tls
(TLS 1.0) 现在不是一种选择。 只需使用SslProtocols.None
(这是默认设置)让操作系统为您选择最佳选项:
无:允许操作系统选择要使用的最佳协议,并阻止不安全的协议。 除非您的应用程序有特定原因不这样做,否则您应该使用此字段。
此外,跳过服务器证书验证(通过让ServerCertificateCustomValidationCallback
返回 true)是一件非常危险的事情。 你应该避免这种情况。
远程主机是否在您的控制之下? 你能检查一下它使用的是哪个 TLS 版本吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.