温馨提示×

linux openssl如何编译安装

小樊
60
2026-07-15 01:13:17
栏目: 云计算

下面给你一个在 Linux 下从源码编译并安装 OpenSSL的完整流程,适用于大多数发行版(CentOS / Rocky / Alma / Ubuntu / Debian 等)。


一、准备编译环境

1. 安装依赖工具

# CentOS / Rocky / Alma
yum groupinstall -y "Development Tools"
yum install -y perl wget make gcc

# Ubuntu / Debian
apt update
apt install -y build-essential libssl-dev perl wget

二、下载 OpenSSL 源码

1. 查看当前系统 OpenSSL 版本(可选)

openssl version

2. 下载指定版本(推荐 LTS)

OpenSSL 3.0.x(长期支持)为例:

cd /usr/local/src
wget https://www.openssl.org/source/openssl-3.0.13.tar.gz

如需 1.1.1 系列:

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

三、解压并配置

tar -zxvf openssl-3.0.13.tar.gz
cd openssl-3.0.13

1. 配置安装路径(非常重要)

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

参数说明:

  • --prefix:安装目录
  • --openssldir:配置文件目录
  • shared:生成动态库(libssl.so / libcrypto.so)
  • zlib:启用压缩支持

四、编译并安装

make -j$(nproc)
make install

编译时间较长,耐心等待


五、配置系统使用新 OpenSSL

1. 添加库路径

echo "/usr/local/openssl/lib64" > /etc/ld.so.conf.d/openssl.conf
ldconfig

如果是 32 位系统或 1.1.1 版本,可能是 lib 而不是 lib64


2. 替换系统 openssl(推荐方式)

mv /usr/bin/openssl /usr/bin/openssl.bak
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

3. 验证版本

openssl version

输出示例:

OpenSSL 3.0.13 30 Jan 2024

六、常见问题

❌ 报错:openssl: error while loading shared libraries

解决:

ldconfig

❌ 编译 Python / Nginx 找不到 OpenSSL

指定路径:

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

⚠️ 不建议直接覆盖系统 OpenSSL(CentOS 7/8)

系统工具(如 yum)依赖旧版 OpenSSL,建议:

  • 只安装到 /usr/local/openssl
  • 不覆盖 /usr/bin/openssl

七、卸载(可选)

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

八、总结流程(速查)

yum install -y gcc make perl wget
cd /usr/local/src
wget https://www.openssl.org/source/openssl-3.0.13.tar.gz
tar -zxvf openssl-3.0.13.tar.gz
cd openssl-3.0.13
./Configure --prefix=/usr/local/openssl shared zlib
make -j$(nproc)
make install
echo "/usr/local/openssl/lib64" > /etc/ld.so.conf.d/openssl.conf
ldconfig
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
openssl version

如果你告诉我:

  • ✅ 系统版本(CentOS 7 / Rocky 9 / Ubuntu 22.04)
  • ✅ 是否与 Python / Nginx / curl 一起使用

我可以给你更精确的编译参数

0