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_AES
和
CONFIG_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 节 “升级问题”中的相关条目。