如何在 Linux 上从源代码安装最新的 OpenSSL 版本
OpenSSL 是一个广泛使用的加密库,它实现 SSL 和 TLS 协议以通过计算机网络进行安全通信。许多程序(例如 Apache Web 服务器、PHP、Postfix 等)都使用 OpenSSL。 OpenSSL 提供对各种加密算法的支持,例如密码(AES、Blowfish、DES、IDEA 等)、加密哈希函数(MD5、MD4、SHA-1、SHA-2 等)和公钥加密(RSA、DSA) ,Diffie-Hellman 密钥交换)。
在本教程中,我将逐步向您展示如何在 Ubuntu 22.04 和 CentOS 7.6 服务器上从源代码安装最新的稳定 OpenSSL 版本。
我们会怎样做?
- 安装依赖项
- 下载 OpenSSL 源代码
安装 OpenSSL
- 编译并安装 OpenSSL
- 配置链接库
- 配置 OpenSSL 二进制文件
第 1 步 - 安装依赖项
在我们从源代码编译 OpenSSL 库之前,第一步是安装一些软件包依赖项,包括 Ubuntu 上的“build-essential”软件包或 CentOS 上的“Development Tools”软件包。
在Ubuntu上
使用下面的 apt 命令更新 Ubuntu 存储库并安装软件编译的软件包依赖项。
sudo apt update
sudo apt install build-essential checkinstall zlib1g-dev -y
在 CentOS 上
使用 yum 命令安装“开发工具”和一些软件包库。
yum group install 'Development Tools'
yum install perl-core zlib-devel -y
安装完成后,进入下一步。
第 2 步 - 下载 OpenSSL
在本教程中,我们将安装 OpenSSL 的最新稳定版本 - OpenSSL 3.0.7。您可以从 OpenSSL 站点下载源代码。
转到“/usr/local/src”目录并使用 wget 下载 OpenSSL 源代码。
cd /usr/local/src/
wget https://www.openssl.org/source/openssl-3.0.7.tar.gz
现在解压 openssl.tar.gz 文件,然后转到“openssl”目录。
tar -xf openssl-3.0.7.tar.gz
cd openssl-3.0.7
OpenSSL源代码已下载。
第 3 步 - 安装 OpenSSL
在将自定义 OpenSSL 版本安装到系统之前,让我们使用以下命令检查已安装的版本。
openssl version -a
下面是我在 Ubuntu 上的结果:
我们将用最新稳定版本 OpenSSL 3.0.7 替换版本 3.0.2。
我们将新的 OpenSSL 版本安装到特定目录“/usr/local/ssl”,然后启用 OpenSSL 的链接库,并为 OpenSSL 配置新的二进制路径。
安装并编译 OpenSSL
转到 openssl 下载目录“/usr/local/src/openssl”。
cd /usr/local/src/openssl-3.0.7
使用以下命令配置并编译 OpenSSL。
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
make
make test
等待 OpenSSL 编译过程。
注意:
- --prefix 和 --openssldir=设置 OpenSSL 的输出路径。
- 共享=强制创建共享库。
- zlib=使用 zlib 库启用压缩。
编译过程完成后,使用以下命令安装 OpenSSL。
make install
OpenSSL 安装在“/usr/local/ssl”目录中。
配置链接库
接下来,我们将为 OpenSSL 配置共享库。新的 OpenSSL 二进制文件将从“/usr/local/ssl/lib”目录加载库文件。
转到“/etc/ld.so.conf.d”目录并创建新的配置文件“openssl-3.0.7.conf”。
cd /etc/ld.so.conf.d/
nano openssl-3.0.7.conf
粘贴 openssl 库路径目录。
/usr/local/ssl/lib64
保存并退出。
现在使用以下命令重新加载动态链接。
sudo ldconfig -v
您将看到“/usr/local/ssl/lib64”目录中的 OpenSSL 库已加载。
乌班图:
配置 OpenSSL 二进制文件
我们将用新版本“/usr/local/ssl/bin/openssl”替换默认的 openssl 二进制文件“/usr/bin/openssl 或 /bin/openssl”。
在 Ubuntu 22.04 LTS 上
备份二进制文件。
mv /usr/bin/c_rehash /usr/bin/c_rehash.bak
mv /usr/bin/openssl /usr/bin/openssl.bak
使用 nano 编辑“/etc/environment”文件。
nano /etc/environment
现在添加新的 OpenSSL 二进制目录,如下所示
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/ssl/bin"
保存并退出。
重新加载环境文件并测试新更新的二进制路径。
source /etc/environment
echo $PATH
现在再次检查 OpenSSL 二进制文件。
which openssl
您将得到如下结果。
Ubuntu 的 OpenSSL 二进制路径已更新。
在 CentOS 7.6 上
备份 CentOS OpenSSL 二进制文件。
mv /bin/openssl /bin/openssl.bak
为 OpenSSL 创建新的环境文件。
vim /etc/profile.d/openssl.sh
粘贴下面的配置。
#Set OPENSSL_PATH
OPENSSL_PATH="/usr/local/ssl/bin"
export OPENSSL_PATH
PATH=$PATH:$OPENSSL_PATH
export PATH
保存并退出。
使 openssl.sh 文件可执行。
chmod +x /etc/profile.d/openssl.sh
使用以下命令加载 OpenSSL 环境并检查 PATH bin 目录。
source /etc/profile.d/openssl.sh
echo $PATH
现在检查 OpenSSL 文件。
which openssl
CentOS 上 OpenSSL 的二进制路径已更新。
第 4 步 - 测试
使用以下命令测试新的 OpenSSL 版本。
openssl version -a
Ubuntu 上的结果。
最新稳定版本的 OpenSSL 已从源代码安装在 Linux Ubuntu 22.04 和 CentOS 7.6 上。
参考
- https://wiki.openssl.org/