如果你之前是通过 yum 安装 OpenSSL,而现在希望通过编译升级 OpenSSL,你可以按照以下步骤进行操作:
-
首先,你需要卸载通过 yum 安装的 OpenSSL 版本:
sudo yum remove openssl
-
下载最新的 OpenSSL 源代码包:
wget https://www.openssl.org/source/openssl-1.1.1.tar.gz 地址失效直接访问 https://www.openssl.org/source/ 选择需要版本下载即可
-
解压源代码包并进入目录:
tar -xvf openssl-1.1.1.tar.gz cd openssl-1.1.1
-
配置 OpenSSL 编译选项:
./config --prefix=/root/ssl/openssl --openssldir=/root/ssl/openssl shared zlib
这里的
--prefix
参数指定了安装路径,
指定目录最好是 ./ 当前目录,否则nginx编译安装会出现以下报错--openssldir
参数指定了 OpenSSL 的配置文件路径,shared
参数表示生成共享库,zlib
参数表示启用对 zlib 的支持。 -
编译和安装 OpenSSL:
# 编译失败缺少 zlib-devel yum install zlib-devel make make install # 执行报错 ### POD document had syntax errors at /usr/bin/pod2man line 69. make: *** [install_docs] Error 1 解决方法 删除/usr/bin/pod2man ###
-
确认安装结果:
/usr/local/openssl/bin/openssl version
如果显示出新版本的 OpenSSL 信息,则表示升级成功
-
配置动态库链接,确保系统能够正确找到新安装的 OpenSSL 库文件。可以使用
ldconfig
命令更新动态链接库缓存:sudo ldconfig
-
最后,验证新安装的 OpenSSL 版本:
/usr/local/openssl/bin/openssl version
如果在安装 OpenSSL 后,在根目录下无法直接执行 openssl
命令,可以尝试以下方法解决这个问题:
将 OpenSSL 的可执行文件路径 /usr/local/openssl/bin
添加到系统的 PATH 环境变量中,这样系统就能够找到并执行 openssl
命令。
你可以编辑 ~/.bashrc
文件(或者其他 shell 对应的配置文件),在文件末尾添加如下内容:
export PATH=$PATH:/root/ssl/openssl/bin
然后执行以下命令使配置生效:
source ~/.bashrc
-
创建符号链接: 你也可以创建一个符号链接到
/usr/bin
或/usr/local/bin
,这样openssl
命令就可以在根目录下直接执行了:sudo ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
或者:
sudo ln -s /usr/local/openssl/bin/openssl /usr/local/bin/openssl
这样做之后,尝试在根目录下直接执行 openssl
命令,应该可以正常使用了。