了解openssl版本資訊
當我這樣做時
openssl version
,我得到以下資訊OpenSSL 1.1.0j 20 Nov 2018 (Library: OpenSSL 1.1.0k 28 May 2019)
j
和庫k
版本之間的這種差異在這裡意味著什麼?我嘗試
openssl
通過do 進行更新,apt-get update && apt-get install openssl
然後當我執行 a 時openssl version
,我得到以下資訊:OpenSSL 1.1.0k 28 May 2019
順便說一句,我是使用 Linux 的新手,所以對這些版本控制細節有點困惑。
OpenSSL 主要是一個庫:程序可以使用的子程序的集合。它實際上是兩個庫組合在一起:
/usr/lib/libcrypto.so.1.1
一個包含與密碼原語和證書管理/usr/lib/libssl.so.1.1
相關的子常式,另一個包含與 TLS 協議相關的子常式。文件名中的1.1
部分是庫版本的一部分,包含這些文件的目錄可能會有所不同(例如,在 64 位 PC 上的 Ubuntu 上,它是/usr/lib/x86_64-linux-gnu
)。這些庫是libssl1.1
Debian/Ubuntu 和派生髮行版的軟體包的一部分(同樣,1.1
是版本號的相關部分)。OpenSSL 還附帶了一個命令行工具,該工具為和庫
/usr/bin/openssl
中的功能提供命令行界面。它可以用來對加密原語進行基準測試、操作密鑰和證書、執行一些測試等。它甚至可以用來做加密數據之類的事情,但該介面根本不適合實際使用:它也是低級和大多數使用它的方法是不安全的。命令行工具作為軟體包的一部分提供。libcrypto``libssl``openssl
庫包與包含命令行程序的包分開的原因與庫包包含部分版本號並且庫文件也包含該版本號的原因相同。可以安裝多個版本的庫,如果您有為不同版本的庫的ABI建構的程序,則需要這樣做。另一方面,您只能安裝一個
openssl
命令。1.1.0j 和 1.1.0k 是 OpenSSL 的兩個不同版本,它們足夠接近以具有兼容的 ABI。通常,當程序的版本結構為中間帶點的數字時,向左數字的增量表示重大更改,而向右數字的增量表示非常小的更改,例如錯誤修復。OpenSSL 傾向於通過增加最右邊的數字甚至字母來進行重大更改,這有點不尋常。
通常,您將擁有相同版本的命令行工具和庫,可能還有一些舊版庫版本,用於使用較舊的 ABI 建構的程序。例如,Ubuntu 18.04 發布了 OpenSSL 1.1.1,但它還為
libssl1.0.0
使用 1.0.0 的 ABI 建構的程序提供了包含 1.0.2 版本的庫,而 1.0.2 仍然與之兼容。在最新的系統上,openssl
程序始終來自與其使用的庫相同的版本,因為它們都來自相同的源包。但是在不是最新的系統上,您可能已經將庫升級到 1.1.0k,但仍然有一個稍舊的命令行執行檔 1.1.0j 版本。