.NET 8,SQL Server 登录前握手(错误:31 - 加密(ssl/tls)握手失败)

问题描述 投票:0回答:1

我们的项目基于 .NET 8 构建,在尝试连接到 SQL 服务器(版本 11.0.5058)时遇到问题。我们项目的 Docker 文件如下:

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime

WORKDIR /app
EXPOSE 80

ENV ASPNETCORE_URLS=http://+:80
Copy . .

RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /etc/ssl/openssl.cnf
RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /usr/lib/ssl/openssl.cnf

RUN cat /etc/ssl/openssl.cnf

ENTRYPOINT ["dotnet", "Api.dll"]

当我想打开 SQL 连接时,出现此错误:

System.Data.SqlClient.SqlException (0x80131904): A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: SSL Provider, error: 31 - Encryption(ssl/tls) handshake failed)

我们已经尝试了这个 GitHub 问题中提到的所有解决方案,但不幸的是,它们都没有解决我们的问题。

我们希望您能够帮助我们解决此问题。预先感谢您的帮助!

.net docker openssl .net-8.0
1个回答
0
投票

尝试在连接字符串中使用

TrustServerCertificate=true
。您还可以参考此 - CRUD Operations in ASP.NET Core and SQL Server with Docker,它执行相同的操作。

© www.soinside.com 2019 - 2024. All rights reserved.