CentOS7.9升级Python3.9+,Openssl1.1+,及升级Python内置ssl库版本(补坑)

前言

Centos7.9的水也挺深,这次重构项目,遇到了各种坑,自带python版本是3.6.8,自带openssl版本是1.0.2k,本地开发环境python是3.9,需要保持一致,先升级了python=3.9.19,由于项目引用了网络请求库requests=2.32.2,安装依赖时检测到python的ssl库版本过低,无法安装,又单独升级了openssl,再安装requests结果还是ssl版本低,查来查去,原来是因为python编译安装时用了自带的ssl库,并没有使用系统新安装的openssl,又加了–with-openssl参数指定ssl库并修改了Setup配置,重新编译后这才正常。

1,升级openssl1.1.1k

# 查看系统版本
$ uname -a
Linux iZp0wadj9ph4nb32lrk4kvZ 3.10.0-1160.92.1.el7.x86_64 #1 SMP Tue Jun 20 11:48:01 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

# 查看openssl版本
$ openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

# 下载解压,进入目录
$ wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
$ tar -xzvf openssl-1.1.1k.tar.gz
$ cd openssl-1.1.1k

# 备份旧版
$ mv /usr/bin/openssl /usr/bin/openssl.bak
$ mv /usr/include/openssl /usr/include/openssl.bak

# 配置安装
$ ./config --prefix=/usr/local/openssl #安装目录
$ make && make install

# 建立链接,写入内容,重新加载配置
$ ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
$ ln -s /usr/local/openssl/include/openssl /usr/include/openssl
$ echo "/usr/local/lib64/" >> /etc/ld.so.conf
$ echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
$ ldconfig -v
# 如果报错libssl.so.1.1: cannot open shared object file: No such file or directory,则重复执行上述几步

# 检查版本
$ openssl version 
OpenSSL 1.1.1k  25 Mar 2021

2,升级python3.9.19,并更新ssl库为1.1.1k

# 查看python版本,centos7.9内置python两个版本,python版本是2.+,python3版本是3.+,python2基本被淘汰,所以本次覆盖安装python为python3
$ python -V  
Python 2.7.5
$ python3 -V
Python 3.6.8

# 查看python内置ssl版本
$ python -c "import ssl; print(ssl.OPENSSL_VERSION)"
OpenSSL 1.0.2k-fips  26 Jan 2017

# 下载解压,进入目录
$ wget https://www.python.org/ftp/python/3.9.19/Python-3.9.19.tgz
$ tar -xzvf Python-3.9.19.tgz
$ cd Python-3.9.19

# 编辑Source文件,取消下列注释,修改SSL=path/to/your/openssl安装目录,此处很关键
$ vi Modules/Setup
SSL=/usr/local/openssl
_ssl _ssl.c \
        -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
        -L$(SSL)/lib -lssl -lcrypto

# 生成配置文件
$ ./configure --prefix=/usr/local/python3 --with-openssl=/user/local/openssl #python安装目录,以及指定openssl安装目录
$ make && make install

# 备份旧版
$ mv /usr/bin/python /usr/bin/python.bak
$ mv /usr/bin/pip /usr/bin/pip_old.bak #此项可能没有

# 创建链接
$ ln -s /usr/local/python3/bin/python3.9 /usr/bin/python #最后的python也可以改成python3,则继续保留原来的python2版本,2和3共存,不覆盖
$ ln -s /usr/local/python3/bin/pip3.9 /usr/bin/pip #此处pip也可以改为pip3

# 查看版本,我为覆盖安装原来的python,若不覆盖安装,则使用python3 -V
$ python -V
Python 3.9.19

# 查看python内置ssl版本
$ python -c "import ssl; print(ssl.OPENSSL_VERSION)"
OpenSSL 1.1.1k  25 Mar 2021

至此,python及openssl的升级完成。感谢互联网大佬们的无私奉献,此篇融合了N多方案才得以解决。

Leave a Comment

Your email address will not be published.

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据