rpm包安装警告:nginx-1.20.1-9.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 352c64e5: NOKEY 错误:依赖检测失败: libcrypto.so.1.1()(64bit) 被 nginx-1:1.20.1-9.el7.x86_64 需要 libcrypto.so.1.1(OPENSSL_1_1_0)(64bit) 被 nginx-1:1.20.1-9.el7.x86_64 需要 libssl.so.1.1()(64bit) 被 nginx-1:1.20.1-9.el7.x86_64 需要 libssl.so.1.1(OPENSSL_1_1_0)(64bit) 被 nginx-1:1.20.1-9.el7.x86_64 需要 libssl.so.1.1(OPENSSL_1_1_1)(64bit) 被 nginx-1:1.20.1-9.el7.x86_64 需要 nginx-filesystem 被 nginx-1:1.20.1-9.el7.x86_64 需要 nginx-filesystem = 1:1.20.1-9.el7 被 nginx-1:1.20.1-9.el7.x86_64 需要
时间: 2025-06-14 16:15:06 浏览: 27
<think>好的,我需要解决用户在安装Nginx 1.20.1 RPM包时遇到的依赖问题和签名验证失败的问题。用户使用的是CentOS/RHEL 7系统,问题包括缺少libcrypto.so.1.1和libssl.so.1.1,以及签名错误NOKEY。
首先,关于依赖问题,libcrypto和libssl是OpenSSL的库文件。CentOS 7默认的OpenSSL版本可能较低,导致无法满足Nginx 1.20.1的需求。解决方法通常是升级OpenSSL或者从其他来源获取兼容的库。但直接升级系统OpenSSL可能有风险,所以更安全的做法是安装高版本OpenSSL的兼容包,比如从EPEL仓库或其他可信源获取。例如,用户可能需要安装openssl11-libs包,这提供了所需的库文件而不影响系统默认版本[^3]。
其次,签名验证失败的问题通常是因为RPM包的GPG密钥未被系统识别。解决方法包括导入正确的Nginx官方GPG密钥,或者暂时禁用签名验证(虽然不推荐,但在测试环境中可用)。根据引用[4],用户可能遇到了密钥文件路径错误的问题,需要确认密钥文件的存在和正确性,或者手动下载并导入密钥。
另外,用户可能需要配置正确的YUM仓库。Nginx官方提供了稳定的仓库,添加该仓库可以确保依赖关系和签名正确。安装EPEL仓库也可能有帮助,因为它提供了额外的软件包,可能包含所需的依赖。
最后,处理步骤需要按照顺序进行:首先处理依赖问题,安装必要的库,然后处理签名问题,导入正确的密钥,最后进行Nginx的安装。如果问题仍然存在,考虑手动下载依赖包或从源码编译安装Nginx,但这可能会更复杂。
需要验证用户的系统架构是否为x86_64,确保下载的RPM包与系统兼容。同时,检查所有命令的正确性,避免拼写错误或路径错误。可能还需要清理YUM缓存,以确保获取最新的元数据。</think>### 分步解决方案
#### 1. 解决 OpenSSL 依赖缺失问题
**问题原因**:Nginx 1.20.1 RPM 包依赖 OpenSSL 1.1.1 以上版本,而 CentOS/RHEL 7 默认 OpenSSL 版本为 1.0.2。
**解决方法**:安装兼容的 OpenSSL 1.1.1 库。
```bash
# 添加 EPEL 仓库(如果尚未添加)
sudo yum install epel-release
# 安装 OpenSSL 1.1.1 兼容包
sudo yum install openssl11 openssl11-libs
```
#### 2. 修复 GPG 签名验证失败(NOKEY 错误)
**问题原因**:系统未导入 Nginx RPM 包的 GPG 密钥。
**解决方法**:手动导入 Nginx 官方 GPG 密钥。
```bash
# 下载并导入 Nginx GPG 密钥
wget https://nginx.org/keys/nginx_signing.key
sudo rpm --import nginx_signing.key
# 验证密钥是否导入成功
rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n' | grep nginx
```
#### 3. 配置 Nginx 官方仓库
**问题原因**:使用官方仓库可确保依赖关系和签名兼容性。
**解决方法**:创建 Nginx 官方仓库配置文件。
```bash
# 创建 Nginx 仓库文件
sudo vi /etc/yum.repos.d/nginx.repo
# 输入以下内容(保存退出)
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
```
#### 4. 清理 YUM 缓存并安装 Nginx
```bash
# 清理旧缓存
sudo yum clean all
# 更新元数据
sudo yum makecache
# 安装 Nginx 1.20.1
sudo yum install nginx-1.20.1
```
#### 5. 手动解决依赖(若仍报错)
如果步骤 1 未生效,手动下载并安装缺失的依赖包:
```bash
# 下载 libcrypto.so.1.1 和 libssl.so.1.1 的 RPM 包(示例链接,需确认版本)
wget https://pkgs.org/download/libcrypto.so.1.1()(64bit)
wget https://pkgs.org/download/libssl.so.1.1()(64bit)
# 手动安装
sudo rpm -ivh *.rpm --nodeps --force
```
### 验证安装
```bash
# 检查 Nginx 版本
nginx -v
# 检查 OpenSSL 库链接
ldd $(which nginx) | grep -E 'libcrypto|libssl'
```
### 引用说明
- OpenSSL 1.1.1 依赖需通过 EPEL 仓库或第三方兼容包解决。
- GPG 密钥需从 Nginx 官网导入以避免签名验证失败[^4]。
- 配置官方仓库可确保依赖关系正确性[^2]。
阅读全文