验证RPM包签名需先确认系统已导入GPG公钥,使用rpm -q gpg-pubkey查看;再通过rpm –checksig包名.rpm检查签名,显示digests signatures OK表示验证通过;若提示MISSING KEYS,则需导入对应公钥如rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7;安装前可用rpm -K包名.rpm自动验证签名完整性,确保软件来源可信且未被篡改。
验证 RPM 包的签名信息可以确保软件包来自可信来源且未被篡改。Linux 中使用 GPG 签名来保证 RPM 包的完整性与真实性。以下是验证 RPM 包签名的常用方法。
1. 检查系统是否已导入 GPG 公钥
RPM 使用 GPG 公钥验证签名。大多数发行版在安装时会自动导入官方密钥。你可以列出已导入的密钥:
rpm -q gpg-pubkey
如果看到类似 gpg-pubkey-xxxxxx 的输出,说明已有公钥导入。
2. 验证 RPM 包的签名
使用以下命令检查某个 RPM 文件的签名信息:
rpm –checksig 包名.rpm
例如:
rpm –checksig httpd-2.4.6-97.el7.centos.x86_64.rpm
正常输出应包含:
- digests signatures OK:表示哈希校验和签名都通过
- NOT OK (MISSING KEYS):表示缺少对应的 GPG 公钥
3. 手动导入 GPG 公钥(如缺失)
如果提示缺失密钥,需先导入对应的 GPG 公钥。通常密钥文件位于:
/etc/pki/rpm-gpg/
以 CentOS/RHEL 为例,导入默认密钥:
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
你也可以从官网下载密钥后导入。
4. 安装前自动验证签名
RPM 默认会在安装时自动验证签名。你也可以显式启用验证:
rpm -K 包名.rpm
该命令会检查:
- PGP 签名
- SHA 哈希
- 是否已导入对应公钥
输出示例:
httpd-2.4.6-97.el7.rpm: rsa sha1 (md5) pgp md5 OK
若所有项显示 OK,说明包完整且签名有效。
基本上就这些。只要系统有正确的 GPG 公钥,验证签名就是自动且可靠的过程。不复杂但容易忽略。