asp.net Asp Net互操作+加密+OpenSslCryptographicException(密码学异常):错误:0A000152:SSL例程::禁用不安全的旧版重新协商

5cg8jx4n  于 2022-11-19  发布在  .NET
关注(0)|答案(1)|浏览(104)

我在ASP.NET核心中的Ubuntu服务器上收到SSL握手错误
我收到来自HttpClient请求的以下错误。

Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
      An unhandled exception has occurred while executing the request.
      System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
       ---> System.Security.Authentication.AuthenticationException: Authentication failed, see inner exception.
       ---> Interop+OpenSsl+SslException: SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL.
       ---> Interop+Crypto+OpenSslCryptographicException: error:0A000152:SSL routines::unsafe legacy renegotiation disabled

我在curl中模拟了请求,并得到了类似的错误。

omhiaaxx

omhiaaxx1#

我正在连接到bluesnap,错误代码意味着端点不允许TLS 1.3以下的TLS重新协商。
现在,这些curl请求可以在Windows上运行,但不能在Linux上运行。而且只能在特定的端点上运行。Windows从1.3向下协商TLS版本,而Linux从1.0向上协商。
在我的例子中,我需要指定TLS 1.3。我不想在全局范围内这样做,所以我用我的HttpClient这样做:

var handler = new HttpClientHandler() { SslProtocols = SslProtocols.Tls13 };
var client = new HttpClient(handler);
var request = new HttpRequestMessage();
request.RequestUri = new Uri(url);

请检查您的端点并查看它是否需要特定版本的TLS。

相关问题