[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
然后再重启
但它不能工作。
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上。
降低协议版本直接起作用,不需要重启。
要编辑哪个文件来降低TLS协议?
- Julius Prayogo 2021-09-29
OpenSSL的配置文件,在Debian/Ubuntu上可能是/etc/ssl/openssl.cnf。
- normic 2021-09-30
谢谢!它也对我有用。 Debian 11(docker),msodbcsql17
- mtoloo 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提供的参考。
#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
参考资料:
我编辑了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 now
- Hemant 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
这个问题可以通过安装微软的这一安全更新来解决:
#5楼
得票数 -1
寻找1.1.1m.tar.gz--这是最新的。
您的答案可以通过其他支持信息得到改进。请编辑以添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到更多关于如何写出好的答案的信息。
- Community 2022-01-18