Centos7 升级 OpenSSL

系统环境

1
Linux clay 3.10.0-1160.49.1.el7.x86_64 #1 SMP Tue Nov 30 15:51:32 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

升级 OpenSSL

  • 查看 OpenSSL 的版本
1
2
# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
  • 备份旧版的 OpenSSL
1
2
# mv /usr/bin/openssl /usr/bin/openssl.bak
# mv /usr/include/openssl /usr/include/openssl-bak
  • 安装依赖
1
# yum install -y perl perl-devel perl-Test-Simple gcc gcc-c++ make
  • 编译安装

注意事项

  1. 建议从 OpenSSL 官网 下载源码包,最新的稳定版本是 1.1.1 系列
  2. ./config 命令必须加上 shared 参数,否则生成的 lib 目录里面只有 .a 静态库文件, 没有 .so 动态链接库文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 下载文件
# wget https://www.openssl.org/source/openssl-1.1.1m.tar.gz

# 解压文件
# tar -xvf openssl-1.1.1m.tar.gz

# 进入解压目录
# cd openssl-1.1.1m

# 构建配置
# ./config shared zlib --prefix=/usr/local/openssl

# 编译
# make -j4

# 安装
# make install

# 添加动态链接库的路径到系统配置文件
# echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

# 使配置生效
# ldconfig -v

# 链接文件
# ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
# ln -sf /usr/local/openssl/include/openssl /usr/include/openssl
  • 验证是否升级成功
1
2
# openssl version
OpenSSL 1.1.1m 14 Dec 2021

升级后的维护

更新 OpenSSL 后,需要排查系统的第三方服务是否以静态编译方式使用了 OpenSSL;如果第三方服务是静态编译的,则需要指定新的 OpenSSL 库重新进行编译,否则会影响服务的正常运行或者容易让其受到安全攻击。

提示

一般以静态编译方式使用了 OpenSSL 的第三方服务有:OpenSSH、Nginx、Apache,尤其当 Web 服务器支持 HTTPS 协议的时候

参考博客