概述
CentOS 7.x 默认安装的 OpenSSL 版本为 1.0.x,在实际使用中经常会需要更高版本的 OpenSSL。本文将介绍两种升级 OpenSSL 的方法:通过 yum
包管理器和源码编译。
方法一:通过 yum
升级
步骤 1:更新默认的 yum
源
首先尝试使用默认的 yum
源进行更新:
bash
yum update openssl
如果发现版本没有变化,可以考虑安装 EPEL 源以获取更高版本的 OpenSSL。
步骤 2:安装 EPEL 源
bash
yum install -y epel-release
步骤 3:安装 OpenSSL 1.1 版本
bash
yum install -y openssl11 openssl11-devel
步骤 4:查找并替换高版本的 OpenSSL
查找新安装的 OpenSSL 1.1 文件路径:
bash
whereis openssl11
输出示例:
plaintext
openssl11: /usr/bin/openssl11 /usr/lib64/openssl11 /usr/include/openssl11 /usr/share/man/man1/openssl11.1.gz
将系统默认的 OpenSSL 替换为新版本:
bash
mv /usr/bin/openssl /usr/bin/openssl.old
ln -s /usr/bin/openssl11 /usr/bin/openssl
mv /usr/lib64/libssl.so /usr/lib64/libssl.so.old
ln -s /usr/lib64/openssl11/libssl.so /usr/lib64/libssl.so
mv /usr/lib64/libcrypto.so /usr/lib64/libcrypto.so.old
ln -s /usr/lib64/openssl11/libcrypto.so /usr/lib64/libcrypto.so
mv /usr/lib64/openssl /usr/lib64/openssl.old
ln -s /usr/lib64/openssl11 /usr/lib64/openssl
mv /usr/include/openssl /usr/include/openssl.old
ln -s /usr/include/openssl11 /usr/include/openssl
验证版本是否已成功升级:
bash
openssl version
输出示例:
plaintext
OpenSSL 1.1.1k FIPS 25 Mar 2021
方法二:通过源码编译升级
步骤 1:下载高版本 OpenSSL
进入 /usr/local/src
目录并下载 OpenSSL 源码包:
bash
cd /usr/local/src
wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1q.tar.gz
步骤 2:解压并编译
bash
tar zxvf openssl-1.1.1q.tar.gz
cd openssl-1.1.1q
./config -fPIC shared zlib --prefix=/usr/local/openssl
make
make install
步骤 3:配置动态链接库路径
将新安装的 OpenSSL 库路径添加到动态链接库配置文件中:
bash
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig
步骤 4:替换系统默认的 OpenSSL
bash
mv /usr/bin/openssl /usr/bin/openssl.old
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
验证版本是否已成功升级:
bash
openssl version
输出示例:
plaintext
OpenSSL 1.1.1q 5 Jul 2022
注意事项
- 备份:在替换系统默认的 OpenSSL 文件之前,建议先备份原有文件(如
openssl.old
),以防出现问题时可以恢复。 - 依赖关系:确保其他依赖于 OpenSSL 的软件和服务在升级后仍能正常运行,必要时重新编译或更新这些依赖项。
- 测试环境:建议先在测试环境中进行升级操作,确认无误后再应用到生产环境。