OpenSSL 是一个开源的、功能齐全的工业级软件库,用于实现通用的加密与安全通信功能。它实现了 TLS(及其前身 SSL)协议,并被广泛应用于网络服务器(包括大多数 HTTPS 站点),为网络通信提供加密保护以防止窃听。
如果你在 CentOS 上编译安装的软件依赖 OpenSSL,但通过 DNF 或 Yum 包管理器安装的版本却不满足要求,即可按照本文提供的最佳实践编译安装最新版 OpenSSL。
本文假设你登录的账户已取得管理员账户(root)权限,因为文中出现的命令大部分都需要用到 root 账户权限。如果你登录的是普通账户,可运行 sudo -s 命令切换到带有 root 权限的 Shell,否则需要在每条命令前添加 sudo 命令。
本文在用到包管理器时,会统一使用 yum 命令,但是要知道在 CenOS 8、CentOS Stream 8/9/10 及更新版本的 CentOS 中,yum 命令已被 dnf 命令替代(以符号链接的形式存在),运行 yum 命令实际上是运行 dnf 命令。
一、下载 OpenSSL
OpenSSL 提供了“长期支持”(LTS,long-term support)和“短期支持”(STS,short-term support)两种版本。为获取更长的安全维护周期和稳定性,本文推荐使用 LTS 版本。
从 OpenSSL 官方下载页面获取最新稳定版源代码压缩包的下载链接:
源码下载页面:https://openssl-library.org/source
运行以下命令。先切换到系统的源代码存放目录,在将 OpenSSL 源代码压缩包下载到当前位置:
cd /usr/local/src
curl -LO https://github.com/openssl/openssl/releases/download/openssl-3.5.4/openssl-3.5.4.tar.gz
二、编译 OpenSSL
你可以在 OpenSSL 源代码压缩包中找到名为 INSTALL.md 的文档,里面包含了较为详尽的针对不同操作系统(包括 Windows、macOS、Linux 等)的安装指南,包括必要条件、配置选项、快速安装指南、详细安装步骤等。
1. 安装依赖
安装 OpenSSL 依赖 Perl 5 及其核心模块,还需要额外安装 Text::Template 和 Time::Piece 这两个模块。详情请查阅压缩包中的 NOTES-PERL.md 文档。对于 CentOS 来说,只需要运行以下命令即可完成安装。
yum install perl-Text-Template perl-Time-Piece
2. 定制功能
解压缩 OpenSSL 源代码压缩包,并切换到源代码所在目录(注意,除非有说明,所有操作都会在该目录下进行,切勿离开):
tar -xvf openssl-3.5.4.tar.gz
cd openssl-3.5.4
在该目录下可以找到一个名为 Configure 的 Shell 脚本,它是源代码附带的“配置脚本”(configure script)。该脚本有两个作用:一是通过提供丰富的选项,可对功能进行细粒度定制;二是自动检测系统中的库及其依赖,如果缺失则中断执行并提示缺失库的名称,以便你补充缺失依赖。
配置选项脚本提供了一些选项,通常除了指定安装位置的选项 --prefix 之外,不需要额外选项,不过,如果你有特定需求,可以参考 INSTALL.md 文档中的“Configuration Options”部分的说明。
本例将 OpenSSL 安装到 /usr/local/openssl 目录下。运行以下命令完成配置。
./Configure --prefix=/usr/local/openssl
3. 开始编译
接下来就可以运行以下代码对 OpenSSL 源码进行编译了。
make
如果你的服务器配置较高,可以在编译时通过 make 命令的 -j 选项开启多个进程以加快编译速度,比如同时用 3 个进程进行编译:make -j3。
编译时间的长短与服务器的配置、可用系统资源以及具体的编译配置有关。编译 OpenSSL 所需要的系统资源不多,一般情况下,即便是配置不高的服务器也能很快编译成功。
三、安装 OpenSSL
编译完成后即可运行以下命令将 OpenSSL 安装到之前指定的目录。
make install
至此 OpenSSL 就安装完成了。如果你是第一次按照本文步骤安装 OpenSSL,为方便之后运行 OpenSSL 的相关命令,可运行以下命令将 OpenSSL 的可执行文件目录添加到系统环境变量 PATH 中:
echo 'export PATH="/usr/local/openssl/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
现在运行以下命令,应该能够看到所安装 OpenSSL 的版本号:
openssl -v
四、升级 OpenSSL
如果想要升级到 OpenSSL 今后发布的新版本,只需要按照以上步骤重新操作一到四步即可。因为重新安装 OpenSSL 时不会覆盖已有配置文件,所以无需修改它们。
发表回复