Linux下OpenSSL升级(1.0.2 -> 1.1.1)并重新编译Nginx

本文介绍如何在Linux环境下从OpenSSL 1.0.2升级到1.1.1版本,包括下载安装新版本、配置环境变量及使用yum工具进行升级的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux下OpenSSL升级(1.0.2 -> 1.1.1)

  1. 查看当前OpenSSL版本
  openssl version
  1. 下载并安装1.1.1版本的OpenSSL
//下载并解压 
  cd /usr/local/
  wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
  tar zxvf openssl-1.1.1w.tar.gz
  cd ./openssl-1.1.1w/

//预编译到指定安装路径,生成Makefile文件,
//-t参数可测试编译情况,–prefix:指定安装目录;
配置config 说明:
//–openssldir:指定openssl配置文件路径;
//--prefix:指定安装目录
//--openssldir:指定配置文件目录
//shared:作用是生成动态连接库
  ./config --prefix=/opt/openssl --openssldir=/usr/local/openssl

//编译,如果编译失败,可执行 make clean 或者编译前用 make test 测试编译情况而不直接编译
  make
  
//编译成功后安装
  make install 

(注意:编译失败可能需要更新zlib、gcc 可能会出现 缺少openssl开发依赖包)

yum -y install gcc pam-devel zlib-devel openssl-devel net-tools
  1. 变更系统PATH路径
  vim /etc/profile
//在打开的文件的最后一行添加
  export PATH="/opt/openssl/bin:$PATH"
//然后按Esc,输入:wq 使文件保存并退出
//是新配置的环境变量生效
  source /etc/profile
  1. 配置新的资源库路径
# 检查openssl-1.1.1w所需要的函数库
ldd /opt/openssl/bin/openssl
# 添加openssl-1.1.1w的库文件路径到ld.so.conf
echo "/opt/openssl/lib" >> /etc/ld.so.conf
# 如果有显示个别 not found,查找库的实际路径(例如在 /usr/lib64/ 或自定义目录)
sudo find / -name "libssl.so.1.1" -o -name "libcrypto.so.1.1"
# 根据上一步找到的路径,将库路径添加到系统配置(假设库在 /opt/openssl/lib/)
echo "/opt/openssl/lib" | sudo tee /etc/ld.so.conf.d/openssl.conf
# 没有not found后,更新系统函数库库 
ldconfig
# 绝对路径查看openssl版本
ldd /opt/openssl/bin/openssl
# 查看旧版本的openssl命令路径
which openssl
# 重命名为openssl.old
mv /usr/local/openssl /usr/local/openssl.old   #重命名openssl文件
# 使用软连接的方式更新openssl命令
ln -s /opt/openssl/bin/openssl /usr/local/openssl
# openssl命令查看版本呢
openssl version

5.重新编译Nginx(TLS1.3需要1.15以上版本)

./configure --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-openssl=/opt/openssl

执行make后如果报错修改配置文件
如果在执行make后报错,修改nginx源码目录中auto/lib/openssl/conf中的openssl路径参数,在40行左右的位置对应四个参数中的.openssl去掉,修改后的内容如下:

  39             CORE_INCS="$CORE_INCS $OPENSSL/include"
  40             CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
  41             CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
  42             CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"

修改完成后重新编译安装(执行make clean,再重新执行configure操作)

#Nginx 配置文件中将ssl做如下修改即可
ssl_protocols TLSv1.2 TLSv1.3;
#进入指定目录
cd /usr/local/nginx/sbin/
#检查nginx配置文件是否正确
./nginx -t
#启动nginx
./nginx
#停止nginx
./nginx -s stop
#重启nginx
./nginx -s reload
<think>好的,我现在需要帮助用户根据他们提供的配置命令来编译Nginx。用户之前遇到了解压问题,现在可能已经解决了,现在他们想继续编译。首先,我得确认用户已经正确解压了所有依赖项,包括pcre、zlib、opensslnginx-rtmp-module。用户提供的配置命令中有一些路径,比如--with-pcre=../pcre-8.40,但用户实际下载的版本可能不同。比如,用户之前下载的是zlib-1.3.1,而配置命令中是zlib-1.2.11,这里可能存在版本不匹配的问题。 接下来,我需要检查用户下载的各个依赖包的版本是否正确。比如,用户之前解压了zlib-1.3.1.tar.gz,但配置命令中指向的是zlib-1.2.11,这会导致路径错误。因此,需要提醒用户将配置命令中的路径改为实际解压后的目录名。同样地,pcre、opensslnginx-rtmp-module的版本也需要核对,确保路径正确。 然后,用户可能需要知道如何正确组织这些依赖项的目录结构。通常,这些依赖项应该和Nginx源码目录在同一层级,这样配置命令中的相对路径才能正确找到它们。例如,如果nginx-1.25.5.tar.gz解压到nginx-1.25.5目录,那么pcre-8.40、zlib-1.3.1等也应该解压到同一层目录,这样../pcre-8.40就能正确指向。 另外,用户提到的nginx-rtmp-module-master可能是指通过git克隆的主分支,而用户之前下载的是特定版本的tar包,比如nginx-rtmp-module-1.2.2.tar.gz。因此,配置命令中的路径需要调整,确保指向正确的模块目录。否则,用户可能会遇到模块路径不存在的问题。 还需要检查用户是否已经安装了必要的编译工具,比如gcc、make等。如果系统缺少这些工具,配置或编译过程会失败。可能需要指导用户安装这些依赖项,比如使用yum或apt-get命令。 此外,配置命令中的--with-debug选项会启用调试日志,但可能会影响性能,需要确认用户是否需要这个选项。如果只是为了生产环境,可能不需要启用调试模式。 用户可能还不太清楚configure命令的各个参数作用,需要简要解释每个参数的意义,帮助他们理解为什么要这样配置。例如,--prefix指定安装目录,--with-pcre等指定依赖库的路径,--add-module添加第三方模块。 最后,编译和安装过程中可能会遇到各种错误,比如依赖库缺失、权限问题等,需要提醒用户在遇到错误时检查日志,根据提示解决问题。例如,如果openssl编译需要perl,用户可能需要先安装perl。 总结来说,我需要逐步引导用户调整配置命令中的路径,确保所有依赖项版本和路径正确,检查编译环境,解释配置参数,提供编译和安装的具体步骤。同时,提醒用户注意可能的错误和解决方法,确保他们能够顺利完成编译安装。</think>--- ### 操作步骤详解 根据你提供的 `./configure` 配置命令,需要将 **Nginx 源码与依赖库**放在正确的目录层级中,调整路径参数。以下是完整的编译流程: --- #### 一、文件准备与目录结构 假设所有压缩包已下载到 `/root/nginx` 目录,解压后文件结构应如下: ```bash /root/nginx/ ├── nginx-1.25.5/ # Nginx 源码目录(由 nginx-1.25.5.tar.gz 解压) ├── pcre-8.40/ # PCRE 库(需手动下载解压) ├── zlib-1.3.1/ # zlib 库(你已解压 zlib-1.3.1.tar.gz) ├── openssl-1.1.1w/ # OpenSSL 库(需下载匹配版本) └── nginx-rtmp-module-1.2.2/ # RTMP 模块(由 nginx-rtmp-module-1.2.2.tar.gz 解压) ``` --- #### 二、依赖库处理 ##### 1. 下载解压缺失的 PCRE 和 OpenSSL ```bash # 下载 PCRE 8.40 wget https://sourceforge.net/projects/pcre/files/pcre/8.40/pcre-8.40.tar.gz tar -xzf pcre-8.40.tar.gz # 下载 OpenSSL 1.0.2k(需匹配你的配置命令) wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz tar -xzf openssl-1.0.2k.tar.gz ``` ##### 2. 验证文件路径 确保所有依赖库与 Nginx 源码目录 **同级**,例如: ```bash ls -l # 应显示以下目录: # nginx-1.25.5 pcre-8.40 zlib-1.3.1 openssl-1.0.2k nginx-rtmp-module-1.2.2 ``` --- #### 三、配置命令调整 根据你实际解压的目录名称,修改 `./configure` 参数: ```bash cd nginx-1.25.5 # 进入 Nginx 源码目录 ./configure \ --prefix=/usr/local/nginx \ --with-debug \ --with-pcre=../pcre-8.40 \ # 指向 PCRE 解压目录 --with-zlib=../zlib-1.3.1 \ # 修改为实际解压的 zlib 目录名 --with-openssl=../openssl-1.0.2k \ # 指向 OpenSSL 解压目录 --add-module=../nginx-rtmp-module-1.2.2 # 修改为 RTMP 模块实际目录名 ``` --- #### 四、编译与安装 ```bash # 编译(启用多核加速) make -j$(nproc) # 安装到 /usr/local/nginx make install ``` --- #### 五、验证安装 1. **检查 Nginx 版本和模块**: ```bash /usr/local/nginx/sbin/nginx -V ``` 输出应包含 `--add-module=../nginx-rtmp-module-1.2.2` 和 `--with-debug`。 2. **启动 Nginx**: ```bash /usr/local/nginx/sbin/nginx ``` --- ### 关键参数说明 | 参数 | 作用 | |-------------------------------|----------------------------------------------------------------------| | `--prefix=/usr/local/nginx` | 指定安装目录 | | `--with-debug` | 启用调试日志(生产环境建议移除) | | `--with-pcre=../pcre-8.40` | 指定 PCRE 库路径(用于正则表达式支持) | | `--with-zlib=../zlib-1.3.1` | 指定 zlib 库路径(用于 Gzip 压缩) | | `--with-openssl=../openssl-1.0.2k` | 指定 OpenSSL 库路径(启用 HTTPS 支持) | | `--add-module=../nginx-rtmp-module-1.2.2` | 添加 RTMP 模块(实现流媒体功能) | --- ### 常见问题处理 1. **依赖库版本不匹配** - **现象**:编译时报错 `error: invalid version in ‘XXX’` - **解决**:检查 `./configure` 中路径是否指向正确的解压目录名。 2. **OpenSSL 编译失败** - **现象**:报错 `Can't locate IPC/Cmd.pm` - **解决**:安装 Perl 依赖: ```bash yum install perl -y # CentOS apt-get install perl -y # Ubuntu ``` 3. **权限不足** - **现象**:`make install` 时报权限错误 - **解决**:使用 `sudo` 执行安装: ```bash sudo make install ``` --- ### 最终效果 完成编译后,你的 Nginx 将具备以下特性: - 支持 RTMP 协议(用于直播推流/拉流) - 启用调试模式(可通过日志排查问题) - 支持 HTTPS(依赖 OpenSSL- 安装路径为 `/usr/local/nginx`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值