0 openssl sql-server-2016 ubuntu-22.04
我花了几天时间在谷歌搜索上寻找解决方案,但没有找到合适的解决方案。所以我把它贴在这里。
我有 3 台虚拟机。
虚拟机 1:
Windows Server 2012 R2 sp1,192.168.1.10
sql server 2016,端口 1432
sql server 2017,端口 1433
虚拟机2:
ubuntu 20.04
openssl 1.1.1p
虚拟机3:
ubuntu 22.04
openssl 3.0.2
在VM2(ubuntu 20.04)上:
连接到sql server 2016
sqlcmd -S 192.168.1.10,1432 -U test -P test
成功连接
连接到sql server 2017
sqlcmd -S 192.168.1.10,1433 -U test -P test
成功连接
在VM3(ubuntu 22.04)上:
连接到sql server 2017
sqlcmd -S 192.168.1.10,1433 -U test -P test
成功连接
连接到sql server 2016
sqlcmd -S 192.168.1.10,1432 -U test -P test
出现错误:
Sqlcmd:错误:适用于 SQL Server 的 Microsoft ODBC 驱动程序 17:TCP 提供程序:错误代码 0x2746。
Sqlcmd:错误:适用于 SQL Server 的 Microsoft ODBC 驱动程序 17:客户端无法建立连接。
然后我检查 VM1 上的 sql server 2016 日志,发现 2 个错误:
事件 ID:36888
生成致命警报并发送到远程端点。这可能会导致连接终止。TLS 协议定义的致命错误代码为 40。Windows SChannel 错误状态为 1205。
事件 ID:36874
从远程客户端应用程序收到 TLS 1.2 连接请求,但客户端应用程序不支持任何密码套件。服务器。SSL 连接请求失败。
我尝试过的:
1、修改/etc/ssl/openssl.cnf
MinProtocol = TLSv1.0
CipherString = DEFAULT@SECLEVEL=1
2、降级openssl到1.1.1p
3、修改win server reg
HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2
键:Enabled Value:1
4、执行Windows更新
我已尝试了所有能找到的有关“TCP 提供程序:错误代码 0x2746”的建议。但没有一个适合我的情况。
当我们在 ubuntu 22.04 和 openssl 3.0.2 中使用 sqlcmd 到 ms sql server 2016 时,会发生此问题
任何想法?有什么建议吗?有什么解决办法吗?
小智 5
我也有同样的问题。寻找解决方案后,终于找到了这个解释
https://github.com/microsoft/msphpsql/issues/1419#issuecomment-1303626500
我继续使用 OpenSSL 3.0.2,只需要更改SECLEVEL为0而不是1in/etc/ssl/openssl.conf
[system_default_sect]
CipherString = DEFAULT:@SECLEVEL=0
Run Code Online (Sandbox Code Playgroud)
它可以工作了,现在我可以使用 Ubuntu 22.04 连接到 SQL Server。
| 归档时间: |
|
| 查看次数: |
2251 次 |
| 最近记录: |