rpm -qi 不能查看签名指纹,真正有效的是:①用 rpm -k 或 --checksig 验证签名状态;②通过 rpm -q gpg-pubkey 确认密钥id是否来自可信源;③核对官网公布的公钥sha256指纹后才导入。内网需强制启用 gpgcheck=1 并禁用绕过参数。

rpm -qi 本身不能查看签名指纹,它只显示软件包的元信息(如名称、版本、描述、安装时间等),不包含签名验证结果或GPG密钥ID。想在内网测试环境防范未经授权的盗版或魔改RPM包,关键不是“用 -qi 看指纹”,而是主动验证签名状态 + 确认公钥来源可信。
以下是真正有效的实操步骤:
✅ 一、用 rpm -K 或 rpm --checksig 检查包是否带有效签名
这是第一道防线,直接判断包有没有被签名、签名能否通过校验:
rpm -K package.rpm # 或更详细输出: rpm --checksig -v package.rpm
- 输出含
OK(如RSA/SHA256 Signature, Key ID abc12345: OK)→ 签名有效,且本地有对应公钥 - 输出含
NOKEY→ 包有签名,但你没导入发布者的公钥(需下一步处理) - 输出含
BAD→ 签名验证失败,包极可能被篡改或伪造,立即停止使用
⚠️ 注意:
NOKEY不代表包是坏的,只说明“你还没信任它”;BAD才代表危险。
✅ 二、确认签名所用密钥ID是否属于官方可信源
从上一步输出中提取 Key ID(例如 8483c65d),然后查这个密钥是否来自你信任的发行版或团队:
rpm -q gpg-pubkey | grep -i "8483c65d"
# 或列出所有已导入密钥及其指纹:
rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n'
- 如果查不到 → 需手动导入官方公钥(见下一步)
- 如果查到但摘要显示
CentOS,Rocky,Fedora Project,Red Hat等可信名称 → 可信 - 如果查到但名称可疑(如
unknown,test-key, 或拼写异常)→ 高风险,勿安装
✅ 三、只从可信渠道导入公钥,并验证其指纹一致性
不要随便下载 .asc 文件就 rpm --import。正确做法:
- 从发行版官网文档确认公钥下载地址(如 Rocky Linux 的
https://rockylinux.org/security/) - 下载公钥后,核对 SHA256 指纹(官网会公示):
sha256sum RPM-GPG-KEY-rockyofficial # 对比是否与官网公布的完全一致
- 确认无误后再导入:
sudo rpm --import RPM-GPG-KEY-rockyofficial
? 密钥指纹本质就是公钥的 SHA256 哈希值,它是验证“这个公钥没被中间人替换”的唯一依据。
✅ 四、内网环境加固建议(防魔改包混入)
- 所有测试机的
/etc/yum.repos.d/*.repo中必须启用:gpgcheck=1 repo_gpgcheck=1
- 禁用
--nogpgcheck、--allow-unauthenticated等绕过签名的参数 - 定期运行
rpm -Va检查已安装文件是否被意外修改(尤其关注S.5....T.类输出) - 内网镜像源应同步上游 GPG 密钥和签名元数据,不自行重签或去签
不复杂但容易忽略。核心就三点:看签名状态、认准密钥ID、核对公钥指纹。只要不跳过 NOKEY 提示、不强行 --force --nodeps 安装,就能拦住绝大多数盗版/魔改包。











