Debian

如何從 /usr/local 強制使用 OpenSSL

  • December 13, 2020

我有一台帶有 64 位 ARM CPU 和 AES 指令集的單板電腦。所提供的 Debian 8 Jessie Mate Desktop 映像使用 OpenSSL 1.0.1k 建構,無法使用該加速。

我已經從啟用了加速的原始碼建構了 OpenSSL 1.0.2n,並將其安裝到 /usr/local。

這個答案解釋瞭如何從命令行訪問它,它工作正常,但我如何強制所有程序和守護程序使用這個 /usr/local 版本?

由於依賴關係(= 無符號連結),無法解除安裝原始 OpenSSL 包。那麼將這兩者共存並使用 /usr/local 中的一個的正確方法是什麼?

注意:我知道我有責任保持更新 /usr/local OpenSSL。

您確定應用程序尚未使用它嗎?如果您檢查 的輸出ldconfig -v,輸出中首先顯示的是哪個 OpenSSL 庫?

預設情況下,基於 Debian 的系統(我相信大多數其他遵循 FHS 的 Linux 系統)/usr/local/lib在搜尋/usr/lib. 這意味著您在安裝自己的自定義版本後啟動的任何使用 OpenSSL 的應用程序都應該/usr/lib.

ldd您可以通過使用與 OpenSSL 連結的二進製文件來確認這一點。例如:

$ ldd /usr/sbin/nginx
...
       libssl.so.1.1 => /usr/lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007fd50f80b000)
...

請注意 - 這是它將使用的版本的路徑libssl,即使系統上有多個副本。

如果您的OpenSSL自定義版本位於下面的目錄中(例如/usr/local/lib/usr/local/lib/ssl,並且您發現它沒有被它顯示定義的搜尋路徑中所有庫的名稱)。ld``/etc/ld.so.conf.d``ldconfig``-v

引用自:https://unix.stackexchange.com/questions/432023