下面是升级 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。