sql-server - 无法在 docker 容器内连接 SQLServer
问题描述
我正在创建一个容器,它有一个 .net 核心应用程序,基于官方的 microsoft 图像。
当应用程序尝试连接到 SQL 服务器时,我收到以下错误,它只发生在容器内:与服务器成功建立连接,但在登录前握手期间发生错误。(提供者:SSL 提供者,错误:31 - 加密(ssl/tls)握手失败)
我的应用程序使用以下包与 sqlserver 通信:
- System.Data.SqlClient 4.8.2
- 小巧玲珑 2.0.78
我的连接字符串如下所示:
Data Source=xxx.xxx.xxx.xxx;Initial Catalog=XXXXXXXX;User ID=XXXXX;Password=XXXX;MultipleActiveResultSets=True;Connect Timeout=60;TrustServerCertificate=true
我的 docker 版本是当时可用的最新版本:“Docker 版本 20.10.2,构建 2291f61”正在 Windows 上运行,这就是我创建 docher 映像的方式:
FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build-env
WORKDIR /prj
COPY . .
RUN dotnet publish myapp.csproj -o /app
FROM mcr.microsoft.com/dotnet/aspnet:3.1
WORKDIR /app
RUN update-ca-certificates --fresh
COPY --from=build-env /app .
ENTRYPOINT ["dotnet", "myapp.dll"]
我已经在谷歌上搜索了一段时间,但没有找到适合我的解决方案,有人可以帮忙吗?
解决方案
此错误通常发生在 docker 镜像容器、Unix 客户端或 Windows 客户端等客户端环境中,其中 TLS 1.2 是支持的最低 TLS 协议。
在 docker 镜像/客户端环境中配置 TLS/SSL 设置以连接 TLS 1.0。
MinProtocol = TLSv1
CipherString = DEFAULT@SECLEVEL=1
推荐阅读
- python - 我究竟做错了什么。谷歌启动 2020
- python - 在 Docker 拉取之后定位目录
- mapbox - 估算 Mapbox 瓦片处理成本
- javascript - React TypeError:postCompany 不是函数
- django - 视图的 Django REST API 最佳实践
- apache-spark - JsonMappingException 的原因可能是什么?
- c++ - QT:如何在布局中同步 QtableViews?
- azure - 在 Windows 设备上注册 Azure AAD MDM 期间未显示条款和条件页面
- javascript - 如何在导航器中显示第一个和最后一个日期刻度 - Highcharts?
- python - 错误的数据类型python