如何轻松快速切换Ubuntu系统中的OpenSSL版本以适配项目需求?
- 内容介绍
- 文章标签
- 相关推荐
至于痛点,为何需要在 Ubuntu 中灵活切换 OpenSSL 版本?
在实际项目开发中。常会遇到以下困扰:
- 依赖冲突某些老旧库或编译脚本只能在 OpenSSL 1.0.2 或 1.1.1 下通过编译,而程序默认已是 3.x。
- 安全合规要求部分合规标准强制使用特定版本,但升级到最新版可能导致不符合。
- CI/CD 环境不一致: 本地开发机与建立服务器的 OpenSSL 不同,导致 “在我机器上能跑” 的问题频发。
- 手动替换风险高: 直接覆盖 /usr/bin/openssl 容易破坏程序工具,一旦出错难以回滚。
需要一种安全、可逆且快速的方式在同一台 Ubuntu 主机上管理多个 OpenSSL 版本,并根据项目需求随时切换。
前置准备
1. 查看当前程序自带的 OpenSSL 版本
openssl version
记下输出,以便后续对比。不过,
2. 安装必要的编译工具
sudo apt update
sudo apt install -y build-essential checkinstall zlib1g-dev libssl-dev
再看方案一。通过 APT 安装多个版本并使用 update‑alternatives 切换
步骤 1:添加提供不同版本的 PPA 或下载指定 deb 包
Ubuntu 默认仓库只提供一个版本。可以利用 -dev 分支或第三方 PPA(如 jonathonf/openssl-3.x) 获得其他版本。这里演示如何同时安装 OpenSSL 1.1.1 和 OpenSSL 3.0.x:
- 添加 PPA
sudo add-apt-repository ppa:jonathonf/openssl-3.x -y
sudo apt update
- 安装两个版本
sudo apt install -y openssl=1.1.1* openssl=3.* libssl-dev
步骤 2:为每个二进制文件创建替代项
- 注册 openssl 二进制文件
sudo update-alternatives --install /usr/bin/openssl openssl /usr/bin/openssl-1.1.1 100 \
--slave /usr/include/openssl openssl_include /usr/include/openssl-1.1.1 \
--slave /usr/lib/x86_64-linux-gnu/libssl.so openssl_lib /usr/lib/x86_64-linux-gnu/libssl-1.1.so \
--slave /usr/lib/x86_64-linux-gnu/libcrypto.so openssl_crypto_lib /usr/lib/x86_64-linux-gnu/libcrypto-1.1.so
sudo update-alternatives --install /usr/bin/openssl openssl /usr/bin/openssl-3.0 200 \
--slave /usr/include/openssl openssl_include /usr/include/openssl-3.0 \
--slave /usr/lib/x86_64-linux-gnu/libssl.so openssl_lib /usr/lib/x86_64-linux-gnu/libssl-3.so \
--slashlib /usr/lib/x86_64-linux-gnu/libcrypto.so openssl_crypto_lib /usr/lib/x86_64-linux-gnu/libcrypto-3.so
步骤 3:交互式或非交互式切换版本
- 查看当前可选项:
sudo update-alternatives --config openssl
- 若想在脚本中直接指定版本:
sudo update-alternatives --set opensSL/usr/bin/OPENSSl-?.,.?# 用实际方法替换
/PRE
至于痛点,为何需要在 Ubuntu 中灵活切换 OpenSSL 版本?
在实际项目开发中。常会遇到以下困扰:
- 依赖冲突某些老旧库或编译脚本只能在 OpenSSL 1.0.2 或 1.1.1 下通过编译,而程序默认已是 3.x。
- 安全合规要求部分合规标准强制使用特定版本,但升级到最新版可能导致不符合。
- CI/CD 环境不一致: 本地开发机与建立服务器的 OpenSSL 不同,导致 “在我机器上能跑” 的问题频发。
- 手动替换风险高: 直接覆盖 /usr/bin/openssl 容易破坏程序工具,一旦出错难以回滚。
需要一种安全、可逆且快速的方式在同一台 Ubuntu 主机上管理多个 OpenSSL 版本,并根据项目需求随时切换。
前置准备
1. 查看当前程序自带的 OpenSSL 版本
openssl version
记下输出,以便后续对比。不过,
2. 安装必要的编译工具
sudo apt update
sudo apt install -y build-essential checkinstall zlib1g-dev libssl-dev
再看方案一。通过 APT 安装多个版本并使用 update‑alternatives 切换
步骤 1:添加提供不同版本的 PPA 或下载指定 deb 包
Ubuntu 默认仓库只提供一个版本。可以利用 -dev 分支或第三方 PPA(如 jonathonf/openssl-3.x) 获得其他版本。这里演示如何同时安装 OpenSSL 1.1.1 和 OpenSSL 3.0.x:
- 添加 PPA
sudo add-apt-repository ppa:jonathonf/openssl-3.x -y
sudo apt update
- 安装两个版本
sudo apt install -y openssl=1.1.1* openssl=3.* libssl-dev
步骤 2:为每个二进制文件创建替代项
- 注册 openssl 二进制文件
sudo update-alternatives --install /usr/bin/openssl openssl /usr/bin/openssl-1.1.1 100 \
--slave /usr/include/openssl openssl_include /usr/include/openssl-1.1.1 \
--slave /usr/lib/x86_64-linux-gnu/libssl.so openssl_lib /usr/lib/x86_64-linux-gnu/libssl-1.1.so \
--slave /usr/lib/x86_64-linux-gnu/libcrypto.so openssl_crypto_lib /usr/lib/x86_64-linux-gnu/libcrypto-1.1.so
sudo update-alternatives --install /usr/bin/openssl openssl /usr/bin/openssl-3.0 200 \
--slave /usr/include/openssl openssl_include /usr/include/openssl-3.0 \
--slave /usr/lib/x86_64-linux-gnu/libssl.so openssl_lib /usr/lib/x86_64-linux-gnu/libssl-3.so \
--slashlib /usr/lib/x86_64-linux-gnu/libcrypto.so openssl_crypto_lib /usr/lib/x86_64-linux-gnu/libcrypto-3.so
步骤 3:交互式或非交互式切换版本
- 查看当前可选项:
sudo update-alternatives --config openssl
- 若想在脚本中直接指定版本:
sudo update-alternatives --set opensSL/usr/bin/OPENSSl-?.,.?# 用实际方法替换
/PRE

