解决 Python 3.8+ 遇到的 OpenSSL 版本不兼容的问题

24-12-03 16:40 16 0 技术

在安装 Python3.8 时可能会遇到与系统自带 OpenSSL 版本不兼容的问题。Python3.8 需要的 OpenSSL 版本为 1.0.21.1.x。如果系统中默认的 OpenSSL 版本低于需求(通常是 OpenSSL 1.0.1),会导致如下错误:

Could not build the ssl module!
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().

查询当前 OpenSSL 版本

openssl version

如果版本低于 Python3.8 的需求,就需要升级 OpenSSL。

升级 OpenSSL 步骤

1. 下载新版 OpenSSL

前往 OpenSSL 官方网站 下载需要的版本。以 OpenSSL 1.1.1n 为例:

wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1n.tar.gz

2. 解压安装包

tar -xvzf openssl-1.1.1n.tar.gz

3. 编译安装

cd openssl-1.1.1n
./config --prefix=/usr/local/openssl no-zlib  # 新版openssl将安装在/usr/local/openssl目录下
make
make install

新版 OpenSSL 将安装在 /usr/local/openssl 目录下。

4. 备份原系统 OpenSSL

升级前,备份原系统自带的低版本 OpenSSL 以便回滚:

mv /usr/bin/openssl /usr/bin/openssl_bak
mv /usr/include/openssl/ /usr/include/openssl_bak

5. 配置新版 OpenSSL

为新版 OpenSSL 创建软连接:

# 将安装好的openssl的openssl命令软连到/usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
# 软链到升级后的libssl.so
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/local/lib64/libssl.so
# 将安装好的openssl命令软连到/usr/bin/openssl
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

6. 修改系统配置

# 写入openssl库文件的搜索路径
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf  # 需要root权限
# 使修改后的/etc/ld.so.conf生效
ldconfig -v

7. 验证安装结果

openssl version

输出应类似于:

OpenSSL 1.1.1n  15 Mar 2022

8. 追加环境变量

vim ~/.bashrc
export LDFLAGS="-L/usr/local/openssl/lib"
export CPPFLAGS="-I/usr/local/openssl/include"
export PKG_CONFIG_PATH="/usr/local/openssl/lib/pkgconfig"
source ~/.bashrc

升级完新版本的 OpenSSL 之后,需要对 Pyhton 3.8 进行重新编译并更新软连接才能继续使用 Python 3.8。

请登录后发表评论 点击登录

文章归档

文章日历

2024 年 12 月
01 02 03 04 05 06 07
08 09 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
30 31 01 02 03 04 05

文章标签

最新评论

友情链接