【发布时间】:2022-10-20 14:35:30
【问题描述】:
我确实有一个用于代理 (nginx)、用户界面和 API (.NET 6) 的 docker 容器。 API 给我一个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) 的错误。
部署环境:CentOS 7
SQL Server 版本:Microsoft SQL 2016 SP2
连接字符串:Data Source=${DB_HOST};Initial Catalog=${DB_NAME};Persist Security Info=True;User ID=${DB_USERNAME};Password=${DB_PASSWORD};MultipleActiveResultSets=True
我尝试过的解决方案:
- 在数据库服务器的 regedit 中启用 TLS 1.2。
- 已重新启动 SQL Server 代理。
- 在连接字符串中添加了
TrustServerCertificate=True或Encrypt=False。 - 已添加
RUN sed -i 's/DEFAULT@SECLEVEL=2/DEFAULT@SECLEVEL=1/g' /etc/ssl/openssl.cnf所有这些解决方案都没有任何效果。急需帮助!
【问题讨论】:
-
通常,当公钥与私钥不匹配时,您会收到握手错误。你知道吗?
-
您是否与 nginx 配置下的
ssl_certificate有关?
标签: .net docker ssl dockerfile tls1.2