CentOS7源码编译升级OpenSSL 1.1.1解决Python3.10报错

发挥余热的CentOS7

虽然CentOS7已经停止维护了,但是还有很多服务器都在运行着这个版本,自带的 OpenSSL 版本通常停留在 1.0.2k,这个版本不仅已经停止支持,而且不支持许多现代加密算法。当你尝试安装 Python 3.10+,或者部署最新的 Nginx 时,往往会报错要求OpenSSL1.1.1 或更高版本。

所以本文将手把手教你如何通过源码编译的方式,在CentOS7上安全地升级 OpenSSL。

注意

OpenSSL是Linux系统的核心组件,升级不当可能导致 yum、ssh 等工具无法使用。请在操作前务必对服务器进行快照备份,并建议在测试环境先演练一遍。

第一步:检查当前的版本

1
2
openssl version
# 输出示例: OpenSSL 1.0.2k-fips 26 Jan 2017

第二步:安装编译依赖

1
sudo yum install -y gcc make pcre-devel zlib-devel

注意: OpenSSL 3.x 可能需要更新版本的 Perl,如果系统 Perl 太老,编译过程会提示缺少 IPC/Cmd.pm 模块,安装 perl-core 通常能解决。

第三步:下载OpenSSL源码

你可以选择升级到 1.1.1w (兼容性好) 或 3.x (最新)。这里以目前最常用的 OpenSSL 1.1.1w 为例(许多旧软件对 3.x 兼容性尚需验证,1.1.1 最稳妥,根据自己的需求选择):

1
2
3
4
5
6
cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz

# 解压
tar -zxvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w

第四步:编译与安装

这里我们将其安装到 /usr/local/openssl 目录下,避免直接覆盖系统文件导致意外。

1
2
3
4
5
6
7
8
9
10
11
# 配置编译选项
# --prefix 指定安装目录
# --openssldir 指定配置文件目录
# shared 编译成动态库
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib

# 编译
make

# 安装
sudo make install

第五步:配置系统环境(关键步骤)

安装完成后,系统默认还是会调用旧的 OpenSSL。我们需要进行替换和链接。

  1. 备份旧版本二进制文件
1
mv /usr/bin/openssl /usr/bin/openssl.bak
  1. 创建新版本的软链接
1
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
  1. 更新动态链接库数据
1
2
3
4
5
# 将新的库路径写入配置文件
echo "/usr/local/openssl/lib" | sudo tee /etc/ld.so.conf.d/openssl.conf

# 刷新动态库缓存
sudo ldconfig

第六步:验证与测试

1
2
openssl version
# 输出示例: OpenSSL 1.1.1w 11 Sep 2023

如果能看到新版本号,且没有报错,说明升级成功!

检查 ssh 和 yum 是否正常: 这一点非常重要,尝试新开一个终端连接服务器,并执行一下 yum check-update,确保系统基础功能未受影响。

常见问题排查

Q: 运行 openssl 提示 error while loading shared libraries: libssl.so.1.1? A: 这是因为系统找不到新的动态库。请检查 /etc/ld.so.conf.d/ 下是否配置了正确的路径(lib 或 lib64),并务必执行 ldconfig。

总结

虽然CentOS7廉颇老矣,但通过手动升级 OpenSSL,我们依然可以让它发挥余热,支持更新的开发环境。希望这篇教程能帮到你!


CentOS7源码编译升级OpenSSL 1.1.1解决Python3.10报错
https://gzthss.com/2025/11/30/20251130-centos7-upgrade-openssl/
Author
GZTHSS
Posted on
November 30, 2025
Licensed under