麒麟(Kylin) V11 独立编译安装 OpenSSL 1.1.1w
适用环境:Kylin Linux Advanced Server V11(Swan25)。本文采用本机原生编译方式,将 OpenSSL 1.1.1w 独立安装至 /usr/local/openssl-1.1.1,保留系统自带 OpenSSL。按顺序执行,任一步骤失败时先排查,再继续。
一、安装前检查
以下命令在目标麒麟主机的 Bash 终端中执行。安装依赖及写入 /usr/local 需要 root 权限。建议开启新的 root 会话;先确认安装目录不存在,避免覆盖已有独立安装。
|
1 2 3 4 5 |
cat /etc/os-release uname -m /usr/bin/openssl version -a type -a openssl ls -ld /usr/local/openssl-1.1.1 |
记录机器架构与系统 OpenSSL 版本,以实际输出为准。首次安装时,最后一条命令提示目录不存在是正常现象;若已存在,先核实用途,不要直接覆盖。以下以系统 OpenSSL 3 为例,记录系统校验值供安装后对比:
|
1 2 |
mkdir -p /usr/local/src sha256sum /usr/bin/openssl /usr/lib64/libssl.so.3 /usr/lib64/libcrypto.so.3 > /usr/local/src/openssl-system-before.sha256 |
如系统版本或库路径不同,以 ldd /usr/bin/openssl 显示的实际库名与路径为准,修改校验命令后再记录。
二、安装编译依赖
|
1 |
yum install -y gcc make perl-core zlib-devel curl tar binutils |
若仓库没有 perl-core,改用 perl;后续若提示缺少 Perl 模块,按报错补装对应软件包。不要卸载或替换系统 openssl、openssl-libs、openssl-devel。
三、下载并校验源码
|
1 2 3 4 5 6 7 |
cd /usr/local/src # 下载源码 wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz # 或者 # curl -fL --retry 3 -o openssl-1.1.1w.tar.gz https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz sha256sum openssl-1.1.1w.tar.gz |
SHA256 必须与以下值完全一致;不一致时停止,不要解压或编译。
|
1 |
cf3098950cb4d853ad95c0841f1f9c6d3dc102dccfcacd521d93925208b76ac8 |
四、解压并配置编译
使用干净的源码目录。若 /usr/local/src/openssl-1.1.1w 已存在,先另行保存原目录,再解压。以下环境变量清理只作用于当前终端。
|
1 2 3 4 5 |
tar -xzf openssl-1.1.1w.tar.gz cd openssl-1.1.1w unset CFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH unset OPENSSL_CONF OPENSSL_ENGINES ./config --prefix=/usr/local/openssl-1.1.1 --openssldir=/usr/local/openssl-1.1.1/ssl --libdir=lib shared zlib -Wl,-rpath,/usr/local/openssl-1.1.1/lib |
./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 目录内逐条执行。编译成功后运行测试,测试通过后才安装。
|
1 2 |
make -j"$(nproc)" make test |
测试应显示成功汇总(通常包含 All tests successful 和 Result: PASS),退出码为 0。若内存不足导致编译进程被终止,将并行数改为 make -j2 或 make -j1。测试失败时不要跳过测试直接安装。
|
1 2 |
# 不要使用 make install make install_sw install_ssldirs |
install_sw 安装程序、头文件和库;install_ssldirs 安装独立配置目录及配置文件。这里不安装手册,无需执行 ldconfig,也无需重启系统。
六、验证独立安装
|
1 2 3 4 |
/usr/local/openssl-1.1.1/bin/openssl version -a ls -l /usr/local/openssl-1.1.1/lib/libssl.so.1.1 ls -l /usr/local/openssl-1.1.1/lib/libcrypto.so.1.1 ls -l /usr/local/openssl-1.1.1/ssl/openssl.cnf |
预期版本为 OpenSSL 1.1.1w 11 Sep 2023;OPENSSLDIR 指向 /usr/local/openssl-1.1.1/ssl。两个共享库与配置文件应存在。
|
1 2 |
ldd /usr/local/openssl-1.1.1/bin/openssl readelf -d /usr/local/openssl-1.1.1/bin/openssl | grep -E "RPATH|RUNPATH" |
libssl.so.1.1 和 libcrypto.so.1.1 应从 /usr/local/openssl-1.1.1/lib 加载,不应出现 not found。RPATH 或 RUNPATH 应包含该目录;libc、libz 等依赖继续来自系统路径属于正常现象。
|
1 |
printf abc | /usr/local/openssl-1.1.1/bin/openssl dgst -sha256 |
输出摘要应为:
|
1 |
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad |
七、验证系统 OpenSSL 保持原状
|
1 2 3 4 5 |
/usr/bin/openssl version openssl version type -a openssl ldd /usr/bin/openssl sha256sum -c /usr/local/src/openssl-system-before.sha256 |
两个版本命令的结果应与安装前一致,默认命令应解析到系统 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 输出,便于复现。系统包管理器不会负责更新这套源码安装的软件。