腾讯云主机ubuntu18升级openssl 1.1.1l(libcrypto.so.1.1报错处理)
作者:互联网
首先是常规套路,我是用root执行的
cd /root
mkdir update
cd /root/update
openssl version -a
显示我的是1.1.1 ,腾讯提醒我有漏洞,在提醒那里看到最新是1.1.1l版。然后继续常规套路。
wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz
tar -xzvf openssl-1.1.1l.tar.gz
cd openssl-1.1.1l
./config
make && make install
等几分钟结束后,exit,重进
openssl version -a
(报错,relocation error: bin/openssl: symbol EVP_mdc2 version OPENSSL_1_1_0 not defined in file libcrypto.so.1.1 with link time reference,大意就是有个东西EVP_mdc2在libcrypto.so.1.1里没定义)
有三种解决办法(其实本质是一样的),推荐用办法一:
一、直接替换原libcrypto.so.1.1
- 先检查openssl的依赖
ldd /usr/local/bin/openssl
,找到libcrypto.so.1.1是在哪里(我的显示如下libcrypto.so.1.1 => /usr/local/lib/libcrypto.so.1.1 (0x00007fcb38d49000)。 - 然后备份原文件,把安装目录下的这个文件放到这里来。
cd /usr/local/lib
mv libcrypto.so.1.1 libcrypto.so.1.1.bak
cp /root/update/openssl-1.1.1l/libcrypto.so.1.1 .
- 再exit,重进,再openssl version -a ,OK不报错了。
二、让你安装的这个libcrypto.so.1.1被先搜索并使用。
- 一般来说,程序在加载动态库时 会有以下几个路径需要加载,按照优先级递减:
- 程序编译时,通过-Wl, -rpath参数指定的路径;
- 环境变量LD_LIBRARY_PATH指定的路径
- /etc/ld.so.conf或/etc/ld.so.conf.d/目录下任何一个文件中指定的路径
- /lib路径
- /usr/lib路径
- (这段出处:https://blog.csdn.net/qq_37684467/article/details/115681736,感谢)
- 根据上面这个提示,如果我们把安装路径放到/etc/ld.so.conf.d/ 内,就能保证新文件比老文件先被搜索到并使用。
echo "/root/update/openssl-1.1.1l" >> /etc/ld.so.conf.d/libc.conf && ldconfig
- 再exit,重进,再openssl version -a ,OK不报错了。
三、修改原来的软链接指到新libcrypto.so.1.1。
在/usr/local/lib/下执行
ll
可以看到 libcrypto.so -> libcrypto.so.1.1*,因此,理论上把这个 libcrypto.so指到安装路径的libcrypto.so.1.1估计也能解决问题,
我没有实践。
最后,为啥推荐方法一,因为方法二和三必须把安装目录保留着,看着眼烦。
感谢:
https://blog.csdn.net/tiven1/article/details/106592679
https://www.cnblogs.com/ls1519/p/14146801.html
https://blog.csdn.net/qq_37684467/article/details/115681736
标签:libcrypto,1.1,openssl,so.1,报错,so,1l 来源: https://www.cnblogs.com/hlixing/p/15532665.html