此错误发生在单个端点上。 它试图从 SqlServer 中提取数据。 如果我尝试运行 IIS,一切都会正常。 当我在 linux docker 容器中运行时,它不再工作了。 我有以下错误:
OpenSslCryptographicException:错误:1425F102:SSL 例程:ssl_choose_client_version:不支持的协议
地点未知 SslException:SSL 握手失败,出现 OpenSSL 错误 - SSL_ERROR_SSL。
Interop+OpenSsl.DoSslHandshake(SafeSslHandle上下文,ReadOnlySpan输入,out byte[] sendBuf,out int sendCount) AuthenticationException:身份验证失败,请参阅内部异常。
System.Net.Security.SslStream.ForceAuthenticationAsync(TIOAdapter 适配器,bool receiveFirst,byte[] reAuthenticationData,bool isApm) SqlException:已成功与服务器建立连接,但在登录前握手期间发生错误。 (提供者:TCP 提供者,错误:35 - 捕获内部异常)
Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException异常,布尔breakConnection,操作wrapCloseInAction)
SecurityNegotiationException:无法为具有权限“....”的 SSL/TLS 安全通道建立信任关系。
如果绝对需要,您可以在运行时 Docker 容器中降低 OpenSSL 所需的最低 TLS 版本。在
Dockerfile
中的 ENTRYPOINT 之前的某个位置添加以下行:
# fix for SQLServer 2008 R2 - reduce minimum protocol to tls v1.0
RUN sed -i -e "s|^MinProtocol = .*|MinProtocol = TLSv1.0|g" "/etc/ssl/openssl.cnf"
但是升级 SQL Server 以使其支持最新的 TLS 版本似乎是一个正确的解决方案。
您也可以尝试在连接字符串上添加
Encrypt=false