在 CentOS 7 上升级 OpenSSL 到 1.1.1
源码编译安装。因为 CentOS 7 官方仓库的默认版本是 1.0.2,并且不会提供 1.1.1 的大版本升级。
这里有一个核心原则需要注意:不要覆盖系统自带的 OpenSSL 1.0.2。很多系统工具(如 yum、ssh)都依赖旧版本,强行替换可能导致系统故障。我们的目标是“新旧共存”,让需要 TLS 1.3 的新应用(如重新编译 Nginx)能找到新版即可。
? 操作步骤:源码编译安装 OpenSSL 1.1.1
1. 安装编译依赖
首先,需要安装编译所需的工具和库。
sudo yum groupinstall -y "Development Tools"
sudo yum install -y perl-IPC-Cmd perl-core wget zlib-devel
进入一个临时目录,下载 OpenSSL 1.1.1 源码。这里以 1.1.1w 版本为例,你可以在 找到其他小版本。
# 创建工作目录
mkdir -p ~/openssl-build && cd ~/openssl-build
# 下载源码(请根据需要替换版本号)
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz
# 解压并进入目录
tar -xzf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
3. 配置、编译与安装
这一步是最关键的。配置的核心是指定一个独立于系统的安装路径(如 /usr/local/openssl-1.1.1),这是实现版本共存的基础。
# 配置安装路径和编译选项
./config --prefix=/usr/local/openssl-1.1.1 \
--openssldir=/usr/local/openssl-1.1.1/ssl \
shared \
zlib-dynamic
# 开始编译(-j$(nproc) 可以利用所有CPU核心加速)
make -j$(nproc)
# 运行测试(可选,但强烈建议执行,确保编译无误)
make test
# 安装到指定目录
sudo make install
⚙️ 配置系统识别新版 OpenSSL
安装完成后,新版 OpenSSL 已存在于 /usr/local/openssl-1.1.1 目录,但系统还找不到它。需要完成以下配置:
配置动态链接库 让系统能够找到新版 OpenSSL 的动态库文件(
.so文件)。# 创建新的配置文件
echo '/usr/local/openssl-1.1.1/lib' | sudo tee /etc/ld.so.conf.d/openssl-1.1.1.conf
# 更新动态链接库缓存
sudo ldconfig配置命令行环境(可选) 如果你希望在终端直接使用新版
openssl命令,可以设置环境变量。建议创建一个独立的脚本,而不是直接覆盖/usr/bin/openssl。# 创建环境变量脚本
sudo tee /etc/profile.d/openssl-1.1.1.sh << 'EOF'
export PATH=/usr/local/openssl-1.1.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/openssl-1.1.1/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/usr/local/openssl-1.1.1/lib/pkgconfig:$PKG_CONFIG_PATH
EOF
# 加载环境变量(或重新登录终端)
source /etc/profile.d/openssl-1.1.1.sh
✅ 验证与后续使用
完成以上步骤后,进行验证:
# 检查默认命令版本(应显示新版本号 1.1.1w)
openssl version
# 检查系统原生版本(应仍为旧版本 1.0.2k)
/usr/bin/openssl version
后续提醒:
本次操作仅为系统安装了 OpenSSL 1.1.1 的库和命令。
若要让你的 Nginx 支持 TLS 1.3,还需要使用这个新路径(
--with-openssl=/usr/local/openssl-1.1.1)重新编译 Nginx,让 Nginx 在编译时链接到新的 OpenSSL 库。如果在验证时发现
openssl version显示的版本号未变,请重新登录 SSH 会话或检查source
<< 上一篇
网友留言(0 条)