8.47. OpenSSL-3.1.2

OpenSSL 软件包包含密码学相关的管理工具和库。它们被用于向其他软件包提供密码学功能,例如 OpenSSH,电子邮件程序和 Web 浏览器 (以访问 HTTPS 站点)。

估计构建时间: 3.0 SBU
需要硬盘空间: 587 MB

8.47.1. 安装 OpenSSL

准备编译 OpenSSL:

./config --prefix=/usr         \
         --openssldir=/etc/ssl \
         --libdir=lib          \
         shared                \
         zlib-dynamic

编译该软件包:

make

运行命令以测试编译结果:

make test

一项名为 30-test_afalg.t 的测试在宿主内核未启用 CONFIG_CRYPTO_USER_API_SKCIPHER,或未启用任何提供 AES-CBC 模式加密实现的选项 (例如,CONFIG_CRYPTO_AESCONFIG_CRYPTO_CBC 的组合,或者 CONFIG_CRYPTO_AES_NI_INTEL —— 如果 CPU 支持 AES-NI)。如果该测试失败,可以安全地忽略它。

安装该软件包:

sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
make MANSUFFIX=ssl install

将版本号添加到文档目录名,以和其他软件包保持一致:

mv -v /usr/share/doc/openssl /usr/share/doc/openssl-3.1.2

如果需要的话,安装一些额外的文档:

cp -vfr doc/* /usr/share/doc/openssl-3.1.2
[注意]

注意

一旦新版的 OpenSSL 被发布,且它包含对安全缺陷的修复,就应该更新 OpenSSL。从 OpenSSL 3.0.0 起,OpenSSL 的版本号使用主版本号.次版本号.修订号的格式。主版本号相同的版本更新保证 API 与 ABI 的兼容性。由于 LFS 只安装共享库,没有必要重新编译链接到 libcrypto.so 或者 libssl.so 的软件包,前提是更新前后主版本号不变

如果安装了 OpenSSH,它会打破上述的一般规则。它包含过于严格的 OpenSSL 版本检查,因此如果 OpenSSL 被更新,其主版本号不变,但次版本号发生变化,则 SSH 客户端和服务器都会拒绝启动。因此,在这样的 OpenSSL 更新后,需要重新构建 OpenSSH如果正在使用 OpenSSH 访问系统,则在升级 OpenSSL 到新的次版本号后,必须在退出登录前重新构建和安装它,否则会无法再次使用 SSH 登录系统。

然而,需要重新启动链接到这两个库的,正在运行的程序。详见第 8.2.1 节 “升级问题”中的相关条目。

8.47.2. OpenSSL 的内容

安装的程序: c_rehash 和 openssl
安装的库: libcrypto.so 和 libssl.so
安装的目录: /etc/ssl, /usr/include/openssl, /usr/lib/engines 以及 /usr/share/doc/openssl-3.1.2

简要描述

c_rehash

一个 Perl 脚本,扫描一个目录中的所有文件,并添加它们的符号链接,符号链接名为对应文件的散列值。c_rehash 已弃用,应该使用 openssl rehash 命令替代它

openssl

一个命令行工具,用于从 shell 使用 OpenSSL的密码学库的一些密码学函数。它可以被用于 man 1 openssl描述的许多功能

libcrypto.so

实现不同 Internet 标准使用的许多密码学算法。该库提供的服务被 OpenSSL 的 SSL、TLS 和 S/MIME 实现使用,也被用于实现 OpenSSHOpenPGP,以及其他密码学标准

libssl.so

实现传输层安全 (TLS v1) 协议。它提供了丰富的 API,这些 API 的文档可以通过执行 man 7 ssl查阅