[ODBC Driver 17 for SQL Server]SSL Provider: [error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol]

回答 5 浏览 1.3万 2020-12-03

操作系统: ubuntu 20.04

服务器 SQL服务器版本:Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86)。

python 3.8

import pyodbc
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)

Error:
[Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol] (-1) (SQLDriverConnect)')

我试着修改openssl.conf:

oid_section             = new_oids

openssl_conf = default_conf

[default_conf]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
MinProtocol = TLSv1.1
CipherString = DEFAULT@SECLEVEL=1

然后再重启

但它不能工作。

thomas lee 提问于2020-12-03
5 个回答
#1楼
得票数 3

这可能是正确的方法,但我认为你应该将协议降低到TLSv1.0。

[system_default_sect]
MinProtocol = TLSv1.0
CipherString = DEFAULT@SECLEVEL=1

我刚刚遇到这个问题,试图从使用openssl 1.1.1d的Debian 10连接到使用MSSQL 12 Express的Windows Server 2008上。

降低协议版本直接起作用,不需要重启。

normic 提问于2021-03-03
要编辑哪个文件来降低TLS协议?Julius Prayogo 2021-09-29
OpenSSL的配置文件,在Debian/Ubuntu上可能是/etc/ssl/openssl.cnf。normic 2021-09-30
谢谢!它也对我有用。 Debian 11(docker),msodbcsql17mtoloo 2022-11-15
#2楼
得票数 1

操作系统:Ubuntu 20/22

Ubuntu 22.04将OpenSSL升级到了3.0.2版本,该版本的安全策略更加严格。因此,我们需要降级策略设置来获取数据

在某个地方创建一个配置文件(例如~/.openssl_allow_tls1.0.cnf,内容如下:

openssl_conf = openssl_init

[openssl_init]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
CipherString = DEFAULT@SECLEVEL=0

然后,像这样运行你的命令:

OPENSSL_CONF=/etc/ssl/.openssl_allow_tls1.0.cnf python3 update.py

谢谢plumo提供的参考。

Priyesh Doshi 提问于2023-03-14
#3楼
得票数 0

第1步:

nano /etc/ssl/openssl.cnf

# Extra OBJECT IDENTIFIER info:
#oid_file               = $ENV::HOME/.oid
oid_section             = new_oids

openssl_conf = default_conf

[default_conf]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
MinProtocol = TLSv1.0
CipherString = DEFAULT@SECLEVEL=1

第2步:

手动安装看起来是这样的:

wget https://www.openssl.org/source/latest.tar.gz -O openssl-1.1.1h.tar.gz
tar -zxvf openssl-1.1.1h.tar.gz
cd openssl-1.1.1h
./config
make
sudo make install
openssl version
sudo ldconfig

参考资料:

https://askubuntu.com/questions/1284658/how-to-fix-microsoft-odbc-driver-17-for-sql-server-ssl-provider-ssl-choose-cli

thomas lee 提问于2020-12-03
我编辑了openssl.cnf,但我无法下载openssl-1.1.1h.tar.gz,它显示404 Not Found。虽然我已经下载了openssl-1.1.1h.tar.gz,但不能运行tar -zxvf openssl-1.1.1h.tar.gz命令。错误:--> gzip: stdin: unexpected end of file tar: Child returned status 1 tar: Error is not recoverable: exiting nowHemant Sah 2022-01-12
@HemantSah,'unexpected eof'意味着文件被破坏了,鉴于你指定了一个输出文件名,很可能意味着你有一个零长度的文件。试着针对一个特定的版本,而不是使用'latest.tar.gz';Brian 2022-08-31
你是对的,我不能正确地回忆,但我在popos(基于ubunut)中安装了较低版本的openssl,以配合sqlserver驱动。Hemant Sah 2022-09-01
#4楼
得票数 0

这个问题可以通过安装微软的这一安全更新来解决:

SQL Server 2008 R2 SP3的安全更新(KB4057113)

Adel Khayata 提问于2022-02-17
#5楼
得票数 -1

寻找1.1.1m.tar.gz--这是最新的。

user3873906 提问于2022-01-18
您的答案可以通过其他支持信息得到改进。请编辑以添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到更多关于如何写出好的答案的信息。Community 2022-01-18
这并不提供问题的答案。一旦你有足够的声誉,你就可以对任何帖子进行评论;相反,提供不需要提问者澄清的答案。- 来自评论Simas Joneliunas 2022-01-21
标签