openssl version查看openssl版本,发现版本还是1.0.2k-fips,所以决定升级openssl。

卸载旧版本openssl

查看旧版本rpm -qa|grep openssl

有需要可以不卸载

yum remove -y openssl

看到有文章说系统默认安装的openssl-libs不能卸载,否则系统可能会崩溃。

安装新版本openssl

1、官网下载opensll最新版本:

wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz --no-check-certificate

最新地址查看:https://www.openssl.org/source/

2、解压并进入解压后的目录:

tar -xzvf openssl-1.1.1t.tar.gz && cd openssl-1.1.1t

3、安装依赖

yum -y install perl gcc zlib-devel

如果配置和编译过程出错,清除编译过程中产生的临时文件和配置过程中产生的文件,安装相关依赖之后重新开始。

make clean && make distclean

4、配置

./config \
--prefix=/usr/local/openssl \
shared zlib

--prefix:安装目录
--openssldir:配置文件目录

如果要使用发行商的OpenSSL配置和系统信任存储库

先执行下方命令可以查看路劲:

find /etc/ -name openssl.cnf -printf "%h\n"
# 输出:/etc/pki/tls

然后配置:

./config \
--prefix=/usr/local/openssl \
--openssldir=/etc/pki/tls \
shared zlib

相关:requests提示Unable to get local issuer certificate的解决办法

5、编译和安装

make depend && make && make install 

如果使用发行商的OpenSSL配置和系统信任存储库,就要用install_sw安装,install_sw的目标不会覆盖 openssl.cnf。

make depend && make && make install_sw 

# 在build之前做make depend(通过这种安装方式,openssl和openssl-devel都将会被安装)

提示:

如果提示You need Perl 5.,则先安装先Perl。

yum -y install perl

如果提示gcc: command not found,执行下方命令。

yum -y install gcc

如果提示include <zlib.h>,执行下方命令。

yum -y install zlib-devel

6、备份当前openssl:

如果旧版本openssl已经卸载,这一步可以省略。

mv /usr/bin/openssl /usr/bin/openssl.old && \
mv /usr/include/openssl /usr/include/openssl.old

7、配置使用新版本:

ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl && \
ln -sf /usr/local/openssl/include/openssl /usr/include/openssl

8、添加动态链接库数据:

首先建议查看/etc/ld.so.conf.d/zopenssl.conf文件是否存在,最近发现很多厂商给的centos7里有这个文件,而这个文件里已经加上了/usr/local/openssl/lib

如果没有zopenssl.conf,我们可以自己添加一下。

/etc/ld.so.conf.d/*.conf,.conf前缀可以随意设置,我这里是openssl.conf。

echo "/usr/local/openssl/lib" >> /etc/ld.so.conf.d/openssl.conf

9、重新加载动态链接库:

这一步不管第7布如何,都是要进行的。

ldconfig -v

10、重新查看版本号:

openssl version

故障排查:
如果在更新完后执行openssl version 命令报错:openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory.
这是由于openssl库的位置不正确造成的。
可以做一个软连接:

ln -sf /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -sf /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

然后执行openssl version命令即可

其他:

解决Unable to get local issuer certificate:

下载curl网站提供的ca证书保存到OPENSSLDIR目录

wget -nv https://curl.se/ca/cacert.pem -O /usr/local/openssl/ssl/cert.pem

参考阅读:
https://blog.csdn.net/mengruobaobao/article/details/109819810
https://blog.csdn.net/yang_yulin_/article/details/99728500
http://www.lixh.cn/archives/3743.html

文章目录