如何轻松快速切换Ubuntu系统中的OpenSSL版本以适配项目需求?

更新于
2026-09-29 12:18:04
4阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

至于痛点,为何需要在 Ubuntu 中灵活切换 OpenSSL 版本?

在实际项目开发中。常会遇到以下困扰:

  • 依赖冲突某些老旧库或编译脚本只能在 OpenSSL 1.0.2 或 1.1.1 下通过编译,而程序默认已是 3.x。
  • 安全合规要求部分合规标准强制使用特定版本,但升级到最新版可能导致不符合。
  • CI/CD 环境不一致: 本地开发机与建立服务器的 OpenSSL 不同,导致 “在我机器上能跑” 的问题频发。
  • 手动替换风险高: 直接覆盖 /usr/bin/openssl 容易破坏程序工具,一旦出错难以回滚。

需要一种安全、可逆且快速的方式在同一台 Ubuntu 主机上管理多个 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

至于痛点,为何需要在 Ubuntu 中灵活切换 OpenSSL 版本?

在实际项目开发中。常会遇到以下困扰:

  • 依赖冲突某些老旧库或编译脚本只能在 OpenSSL 1.0.2 或 1.1.1 下通过编译,而程序默认已是 3.x。
  • 安全合规要求部分合规标准强制使用特定版本,但升级到最新版可能导致不符合。
  • CI/CD 环境不一致: 本地开发机与建立服务器的 OpenSSL 不同,导致 “在我机器上能跑” 的问题频发。
  • 手动替换风险高: 直接覆盖 /usr/bin/openssl 容易破坏程序工具,一旦出错难以回滚。

需要一种安全、可逆且快速的方式在同一台 Ubuntu 主机上管理多个 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