在我运行从git上下载的程序过程中,有以下报错,不知道怎么解决
liunx centOS6 python3.9 openssl1.1.1
我看报错信息,网上说法是服务器和客户端加密套件不兼容,但我查看过,服务器端是TLS1.3版本的ECDHE-RSA-AES128-GCM-SHA256,这在我的本地也是支持这个加密套件的
正常运行
你有没有检查过下载的代码有无问题?如果有问题的话你需要对下载过来的代码进行修改。一般如果版本更迭的话,代码也需要进行相应的修改
不知道你这个问题是否已经解决, 如果还没有解决的话:首先,我们需要确认一下SSL模块的版本是否正确。
使用以下命令查看Python中SSL模块的版本:
python -c "import ssl; print(ssl.OPENSSL_VERSION)"
如果输出的版本少于1.1.1,说明SSL模块版本不正确,我们需要更新SSL模块。
使用以下命令安装最新版本的openssl:
sudo yum update openssl
安装完成后,我们需要重新编译Python并指定使用更新后的openssl库。
下载Python 3.9的源代码,并解压。
使用以下命令进入Python源代码目录:
cd Python-3.9.0
接着,编译Python源代码并指定使用更新后的openssl库:
./configure --with-openssl=/usr/bin/openssl --enable-optimizations
make
sudo make install
编译完成后,重新检查SSL模块的版本是否正确。
如果SSL模块版本已经正确,但程序依然无法正常运行,那么我们可能需要修改程序代码,使其使用正确的加密套件。
一种可能的解决方案是,在程序的网络请求模块中增加手动指定使用的加密套件。
以Python的Requests库为例,在发送HTTPS请求时可以使用以下代码指定加密套件:
import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.ssl_ import create_urllib3_context
# 自定义加密套件
ciphers = ':'.join([
'ECDHE-RSA-AES128-GCM-SHA256',
'AES128-SHA256',
'AES128-SHA',
'ECDHE-RSA-AES256-SHA384',
'DHE-RSA-AES256-SHA256',
'DHE-RSA-AES256-SHA',
'ECDHE-RSA-AES256-SHA',
'DHE-RSA-AES128-SHA256',
'DHE-RSA-AES128-SHA',
'ECDHE-RSA-AES256-GCM-SHA384',
'ECDHE-ECDSA-AES256-GCM-SHA384',
'ECDHE-ECDSA-AES128-GCM-SHA256',
])
# 创建SSL context
ctx = create_urllib3_context(ciphers=ciphers)
# 创建Session,并使用自定义的SSL context
s = requests.Session()
s.mount('https://', HTTPAdapter(max_retries=3),)
s.keep_alive = False
s.verify = True
s.stream = True
s.cert = None
s.headers.update({'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'})
# 发送请求
response = s.get(url, timeout=10, headers=headers)
以上代码中,我们手动指定使用了ECDHE-RSA-AES128-GCM-SHA256等加密套件。你可以根据服务器端的加密套件列表选择相应的加密套件。
如果你无法修改程序代码,那么你可能需要联系程序开发者,让其修复程序中的SSL模块问题。