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 | |
第二步:安装编译依赖
1 | |
注意: 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 | |
第四步:编译与安装
这里我们将其安装到 /usr/local/openssl 目录下,避免直接覆盖系统文件导致意外。
1 | |
第五步:配置系统环境(关键步骤)
安装完成后,系统默认还是会调用旧的 OpenSSL。我们需要进行替换和链接。
- 备份旧版本二进制文件
1 | |
- 创建新版本的软链接
1 | |
- 更新动态链接库数据
1 | |
第六步:验证与测试
1 | |
如果能看到新版本号,且没有报错,说明升级成功!
检查 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,我们依然可以让它发挥余热,支持更新的开发环境。希望这篇教程能帮到你!