centos7.x 升级openssl1.1.1
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
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。