首先是常规套路,我是用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
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 .
二、让你安装的这个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,感谢)
echo "/root/update/openssl-1.1.1l" >> /etc/ld.so.conf.d/libc.conf && ldconfig
三、修改原来的软链接指到新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