腾讯云主机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

上一篇:Linux从源码编译安装Python 3.10


下一篇:git Bush使用openssl生成私钥和公钥