騰訊雲主機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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM