如何在Fedora 34上安装OpenSSL 1.0并与默认1.1版本共存
可行性说明
Fedora 34 可以同时安装 OpenSSL 1.0 和 1.1 两个版本,二者的动态库文件名不同,不会互相覆盖。只要将 1.0 版本安装到独立的非系统默认路径,仅让你的 C++ 项目链接该版本,完全不会影响系统依赖 OpenSSL 1.1 的内置软件正常运行。
具体安装操作步骤
首先切换到 root 用户,或在所有命令前加 sudo 执行:
- 第一步:安装编译依赖
运行命令:dnf install gcc make perl zlib-devel -y - 第二步:获取 OpenSSL 1.0 源码
下载 OpenSSL 1.0.2 稳定版源码压缩包,解压到本地任意临时目录。 - 第三步:编译安装到独立路径
不要将安装前缀设置为/usr或者/usr/local,否则会覆盖系统默认的OpenSSL版本,导致系统组件异常
进入解压后的源码目录,依次执行以下命令:./config --prefix=/opt/openssl-1.0.2 --openssldir=/opt/openssl-1.0.2 shared zlib make -j$(nproc) make install - 第四步:验证安装结果
运行命令:
输出内容包含/opt/openssl-1.0.2/bin/openssl version1.0.2版本号即代表安装成功。
项目适配配置
按照你使用的构建工具,配置项目链接自定义路径下的 OpenSSL 1.0:
- CMake 项目:在 CMakeLists.txt 的
find_package(OpenSSL)代码前添加以下配置:
清空原有构建目录重新生成编译即可。set(OPENSSL_ROOT_DIR "/opt/openssl-1.0.2") set(OPENSSL_LIBRARIES "/opt/openssl-1.0.2/lib") - 直接使用 g++ 编译:编译参数添加
-I/opt/openssl-1.0.2/include,链接参数添加-L/opt/openssl-1.0.2/lib -lssl -lcrypto - 运行时如果提示找不到动态库:
临时生效可以在运行命令前加环境变量:LD_LIBRARY_PATH=/opt/openssl-1.0.2/lib ./你的可执行文件名
永久生效可以新建配置文件/etc/ld.so.conf.d/openssl-1.0.2.conf,写入内容/opt/openssl-1.0.2/lib,保存后执行ldconfig命令刷新缓存即可。
注意事项
- 不要将
/opt/openssl-1.0.2/bin加入系统PATH环境变量的最前面,避免系统默认调用 openssl 命令时优先使用 1.0 版本,导致依赖 1.1 的系统软件出错。 - OpenSSL 1.0 系列已经停止官方维护,存在已知安全漏洞,仅建议临时用于兼容旧项目,尽快完成项目对 OpenSSL 1.1 及更高版本的适配。
内容的提问来源于stack exchange,提问作者TSG
相关产品推荐
相关产品推荐

