了解 openssl 版本信息

了解 openssl 版本信息

当我这样做时openssl version,我得到以下信息

OpenSSL 1.1.0j  20 Nov 2018 (Library: OpenSSL 1.1.0k  28 May 2019)

j和库版本之间的差异k在这里意味着什么?

我尝试openssl通过执行更新apt-get update && apt-get install openssl,然后当我执行 a 时openssl version,我得到以下信息:

OpenSSL 1.1.0k  28 May 2019

顺便说一句,我是 Linux 的新手,所以对这些版本控制细节有点困惑。

答案1

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.1Debian/Ubuntu 和派生发行版上软件包的一部分提供(同样,1.1是版本号的相关部分)。

OpenSSL 还附带了一个命令行工具,它为和库/usr/bin/openssl中的功能提供了命令行界面。它可以用于对加密原语进行基准测试、操作密钥和证书、运行一些测试等。它甚至可以用于加密数据之类的事情,但该界面根本不适合实际使用:它太低级别且大多数使用方式都是不安全的。命令行工具作为软件包的一部分提供。libcryptolibsslopenssl

库包与包含命令行程序的包分开的原因与库包包含部分版本号以及库文件也包含部分版本号的原因相同。可以安装该库的多个版本,如果您有为不同版本的库构建的程序,则需要这样做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。

相关内容