SSL连接无法建立



我有一个发送HTTP请求作为自动化测试的一部分的问题,我想检查URL的状态代码。当我发送请求时,我有一个Exception:

系统。AggregateException: '发生一个或多个错误。'(SSL连接无法建立,参见内部异常。)'

内部异常有:

HttpRequestException: The SSL connection could not be established, see inner exception.

IOException: Unable to read data from the transport connection: An existing connection was forced close by remote host.

SocketException: An existing connection was forced close by remote host.

我代码:

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;
}

提前感谢您!

正如@CodeCaster已经提到的:SslProtocols.Tls(TLS 1.0)现在不是一个选择。只需使用SslProtocols.None(这是默认的)让操作系统为您选择最佳选项:

None:允许操作系统选择使用最佳协议,并阻止不安全的协议。除非你的应用有特别的理由不这样做,否则你应该使用这个字段。

https://learn.microsoft.com/en us/dotnet/api/system.security.authentication.sslprotocols?view=net - 5.0 #字段

此外,跳过服务器证书验证(通过让ServerCertificateCustomValidationCallback只是返回true)是一个非常危险的事情。你应该避免那样。

远程主机是否在您的控制之下?你能检查一下它使用的是哪个TLS版本吗?

远程主机不接受您想要使用TLS 1.0进行连接,这是不赞成的。

指定。tls12或。tls13。

相关内容

  • 没有找到相关文章

最新更新