温馨提示×

如何编译安装openssl

小樊
50
2026-07-01 15:36:03
栏目: 云计算

下面以 Linux(常见发行版,如 Ubuntu / CentOS / Rocky / Alma 等) 为例,介绍 从源码编译安装 OpenSSL 的完整步骤。
示例以 OpenSSL 3.x(推荐) 为主,同时说明 1.1.1 的区别。


一、准备编译环境

Ubuntu / Debian

sudo apt update
sudo apt install -y build-essential \
    checkinstall \
    zlib1g-dev \
    libssl-dev \
    wget \
    make \
    gcc

CentOS / Rocky / Alma

sudo yum groupinstall -y "Development Tools"
sudo yum install -y \
    zlib-devel \
    wget \
    perl \
    gcc \
    make

二、下载 OpenSSL 源码

推荐从官网下载:

cd /usr/local/src

OpenSSL 3.x(推荐)

wget https://www.openssl.org/source/openssl-3.2.1.tar.gz
tar -xzf openssl-3.2.1.tar.gz
cd openssl-3.2.1

或 OpenSSL 1.1.1(较老系统)

wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -xzf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w

三、配置编译参数(重点)

✅ 推荐配置(安装到 /usr/local/openssl

./Configure \
  --prefix=/usr/local/openssl \
  --openssldir=/usr/local/openssl \
  shared \
  zlib

说明:

  • --prefix:OpenSSL 安装目录
  • shared:编译动态库(非常重要)
  • zlib:支持压缩

可选参数

no-weak-ssl-ciphers
no-ssl3
no-tls1

四、编译并安装

make -j$(nproc)
sudo make install

⚠️ 编译时间长取决于 CPU,一般 3–10 分钟


五、配置系统使用新 OpenSSL

1️⃣ 配置动态库

echo "/usr/local/openssl/lib64" | sudo tee /etc/ld.so.conf.d/openssl.conf
sudo ldconfig

如果是 32 位系统或 lib,改为 lib


2️⃣ 配置 PATH(可选但强烈建议)

echo 'export PATH=/usr/local/openssl/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

六、验证安装

openssl version

✅ 输出示例:

OpenSSL 3.2.1 30 Jan 2024

查看库路径:

which openssl
ldd $(which openssl)

七、常见问题

❓ 系统还是旧版本 OpenSSL?

原因:系统 /usr/bin/openssl 优先级更高
解决:

sudo ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl

⚠️ 不推荐覆盖系统 OpenSSL(可能影响系统工具)


❓ 编译 Python / Nginx / curl 时找不到 OpenSSL?

指定路径:

--with-openssl=/usr/local/openssl

八、完全卸载(如需要)

sudo rm -rf /usr/local/openssl
sudo rm /etc/ld.so.conf.d/openssl.conf
sudo ldconfig

九、总结流程(速查)

./Configure --prefix=/usr/local/openssl shared zlib
make -j$(nproc)
sudo make install
echo "/usr/local/openssl/lib64" | sudo tee /etc/ld.so.conf.d/openssl.conf
sudo ldconfig

如果你需要:

  • 只给某个程序用(不影响系统)
  • 在 Docker / 交叉编译 / ARM 环境
  • 编译 OpenSSL 给 Python / Nginx / curl

可以告诉我你的具体使用场景,我可以给你更精确的方案。

0