在Linux系统上升级OpenSSL的方法

  • Post category:Linux

下面是升级 OpenSSL 的完整攻略:

1. 确定 OpenSSL 版本

在开始升级 OpenSSL 之前,首先需要确定当前系统的 OpenSSL 版本。可以通过以下命令查看:

openssl version -a

执行完毕后,会输出 OpenSSL 的版本信息,例如:

OpenSSL 1.0.2k-fips  26 Jan 2017
built on: reproducible build, date unspecified
platform: linux-x86_64
options:  bn(64,64) md2(int) rc4(16x)

2. 下载和编译 OpenSSL

从 OpenSSL 官网下载最新的源码包,并解压缩到任意目录下。然后使用以下命令编译和安装新的 OpenSSL 版本:

cd /path/to/openssl-1.1.x
./config --prefix=/usr/local/openssl-1.1.x --openssldir=/usr/local/openssl-1.1.x shared zlib
make
make test
sudo make install
  • --prefix:指定 OpenSSL 安装路径
  • --openssldir:指定 OpenSSL 配置文件和数据文件路径
  • shared:编译 OpenSSL 动态链接库
  • zlib:启用 zlib 压缩库

执行完毕后,会将新的 OpenSSL 安装到指定路径中。

3. 更新 LD_LIBRARY_PATH

如果当前系统中有其他应用程序依赖旧版本的 OpenSSL 库,那么需要更新 LD_LIBRARY_PATH 环境变量,让系统优先使用新版本的库文件。可以使用以下命令添加环境变量:

export LD_LIBRARY_PATH=/usr/local/openssl-1.1.x/lib:$LD_LIBRARY_PATH

注意:该命令只在当前终端会话中生效。

如果需要永久生效,可以将上述命令添加到 /etc/profile 文件中,并执行 source /etc/profile 命令。

示例 1:在 Ubuntu 上升级 OpenSSL

下面是在 Ubuntu 16.04 LTS 上升级 OpenSSL 的示例。

1. 查看当前 OpenSSL 版本

执行以下命令查看当前 OpenSSL 版本:

openssl version -a

输出结果如下:

OpenSSL 1.0.2g  1 Mar 2016
built on: reproducible build, date unspecified
platform: debian-amd64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: gcc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/lib/ssl"

可以看到当前 OpenSSL 版本为 1.0.2g。

2. 下载和编译 OpenSSL

从 OpenSSL 官网下载最新的源码包(例如 OpenSSL 1.1.1),并解压缩到任意目录下。然后使用以下命令编译和安装新的 OpenSSL 版本:

cd /path/to/openssl-1.1.1
./config --prefix=/usr/local/openssl-1.1.1 --openssldir=/usr/local/openssl-1.1.1 shared zlib
make
make test
sudo make install

3. 更新 LD_LIBRARY_PATH

使用以下命令更新 LD_LIBRARY_PATH 环境变量:

export LD_LIBRARY_PATH=/usr/local/openssl-1.1.1/lib:$LD_LIBRARY_PATH

注意:该命令只在当前终端会话中生效。

如果需要永久生效,可以将上述命令添加到 /etc/profile 文件中,并执行 source /etc/profile 命令。

4. 验证 OpenSSL 版本

使用以下命令验证 OpenSSL 版本:

openssl version -a

输出结果如下:

OpenSSL 1.1.1  11 Sep 2018
built on: Wed Sep 12 01:11:22 2018 UTC
platform: linux-x86_64
options:  bn(64,64) rc4(16x,int) des(int) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/local/openssl-1.1.1"

可以看到升级后的 OpenSSL 版本为 1.1.1。

示例 2:在 CentOS 上升级 OpenSSL

下面是在 CentOS 7 上升级 OpenSSL 的示例。

1. 查看当前 OpenSSL 版本

执行以下命令查看当前 OpenSSL 版本:

openssl version -a

输出结果如下:

OpenSSL 1.0.2k-fips  26 Jan 2017
built on: reproducible build, date unspecified
platform: linux-x86_64
options:  bn(64,64) md2(int) rc4(16x)

可以看到当前 OpenSSL 版本为 1.0.2k-fips。

2. 下载和编译 OpenSSL

从 OpenSSL 官网下载最新的源码包(例如 OpenSSL 1.1.1),并解压缩到任意目录下。然后使用以下命令编译和安装新的 OpenSSL 版本:

cd /path/to/openssl-1.1.1
./config --prefix=/usr/local/openssl-1.1.1 --openssldir=/usr/local/openssl-1.1.1 shared zlib
make
make test
sudo make install

3. 更新 LD_LIBRARY_PATH

使用以下命令更新 LD_LIBRARY_PATH 环境变量:

export LD_LIBRARY_PATH=/usr/local/openssl-1.1.1/lib:$LD_LIBRARY_PATH

注意:该命令只在当前终端会话中生效。

如果需要永久生效,可以将上述命令添加到 /etc/profile 文件中,并执行 source /etc/profile 命令。

4. 验证 OpenSSL 版本

使用以下命令验证 OpenSSL 版本:

openssl version -a

输出结果如下:

OpenSSL 1.1.1  11 Sep 2018
built on: Wed Sep 12 01:11:22 2018 UTC
platform: linux-x86_64
options:  bn(64,64) rc4(16x,int) des(int) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/local/openssl-1.1.1"

可以看到升级后的 OpenSSL 版本为 1.1.1。