适用环境:Kylin Linux Advanced Server V11(Swan25)。本文采用本机原生编译方式,将 OpenSSL 1.1.1w 独立安装至 /usr/local/openssl-1.1.1,保留系统自带 OpenSSL。按顺序执行,任一步骤失败时先排查,再继续。

一、安装前检查

以下命令在目标麒麟主机的 Bash 终端中执行。安装依赖及写入 /usr/local 需要 root 权限。建议开启新的 root 会话;先确认安装目录不存在,避免覆盖已有独立安装。

记录机器架构与系统 OpenSSL 版本,以实际输出为准。首次安装时,最后一条命令提示目录不存在是正常现象;若已存在,先核实用途,不要直接覆盖。以下以系统 OpenSSL 3 为例,记录系统校验值供安装后对比:

如系统版本或库路径不同,以 ldd /usr/bin/openssl 显示的实际库名与路径为准,修改校验命令后再记录。

二、安装编译依赖

若仓库没有 perl-core,改用 perl;后续若提示缺少 Perl 模块,按报错补装对应软件包。不要卸载或替换系统 openssl、openssl-libs、openssl-devel。

三、下载并校验源码

SHA256 必须与以下值完全一致;不一致时停止,不要解压或编译。

四、解压并配置编译

使用干净的源码目录。若 /usr/local/src/openssl-1.1.1w 已存在,先另行保存原目录,再解压。以下环境变量清理只作用于当前终端。

./config 自动识别本机系统与架构,适用于本机原生编译。检查配置输出:常见 x86_64 对应 linux-x86_64,aarch64 对应 linux-aarch64。若识别错误,可将 ./config 改为 ./Configure linux-x86_64 或 ./Configure linux-aarch64,其余参数保持不变。shared 生成共享库,zlib 启用压缩库支持;固定 lib 目录并写入独立运行时库路径,无需修改系统动态库搜索配置。

五、编译 测试和安装

在 /usr/local/src/openssl-1.1.1w 目录内逐条执行。编译成功后运行测试,测试通过后才安装。

测试应显示成功汇总(通常包含 All tests successful 和 Result: PASS),退出码为 0。若内存不足导致编译进程被终止,将并行数改为 make -j2 或 make -j1。测试失败时不要跳过测试直接安装。

install_sw 安装程序、头文件和库;install_ssldirs 安装独立配置目录及配置文件。这里不安装手册,无需执行 ldconfig,也无需重启系统。

六、验证独立安装

预期版本为 OpenSSL 1.1.1w 11 Sep 2023;OPENSSLDIR 指向 /usr/local/openssl-1.1.1/ssl。两个共享库与配置文件应存在。

libssl.so.1.1 和 libcrypto.so.1.1 应从 /usr/local/openssl-1.1.1/lib 加载,不应出现 not found。RPATH 或 RUNPATH 应包含该目录;libc、libz 等依赖继续来自系统路径属于正常现象。

输出摘要应为:

七、验证系统 OpenSSL 保持原状

两个版本命令的结果应与安装前一致,默认命令应解析到系统 OpenSSL;系统命令继续加载原有系统库(OpenSSL 3 通常为 libssl.so.3 和 libcrypto.so.3)。校验结果应全部为 OK。若不一致,先排查路径、别名或同期系统包更新,不要手工覆盖系统文件。

八、必要注意事项

保持隔离:不要覆盖 /usr/bin/openssl、/usr/lib64/libssl.so* 或 /usr/lib64/libcrypto.so*,也不要将独立安装的库软链接到系统库目录。

保持全局配置不变:不要将独立 bin 目录放到全局 PATH 最前面;不要全局设置 LD_LIBRARY_PATH、OPENSSL_CONF 或 OPENSSL_ENGINES;不要把独立 lib 目录加入 /etc/ld.so.conf 或 /etc/ld.so.conf.d。日常调用独立版本时使用完整路径。

目录权限:/usr/local/openssl-1.1.1 及其程序、库和配置应由 root 管理,不应允许普通用户写入,避免被替换后随程序加载。

证书信任:独立配置目录不会自动带有系统的 CA 信任证书。以后若使用该命令验证 TLS 或证书,应显式指定可信 CA 文件或目录;不要直接复制 OpenSSL 3 专用配置,也不要通过关闭证书验证解决问题。

版本维护:OpenSSL 1.1.1 已于 2023 年 9 月 11 日结束公开支持。1.1.1w 用于确有需要的兼容环境;独立安装不代表仍获得公开安全更新,后续应维护升级计划。

保留记录:建议保留源码压缩包、校验值、配置命令及 make test 输出,便于复现。系统包管理器不会负责更新这套源码安装的软件。