跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

Linux如何验证RPM包的签名_防止安装恶意软件包教程

答案:验证RPM包签名可确保软件来源可信。使用rpm -K检查签名状态,导入官方GPG公钥并启用gpgcheck=1配置,强制安装前验证完整性,防止恶意软件入侵。

在Linux系统中,特别是基于RPM的发行版(如CentOS、RHEL、Fedora),安装软件包时验证其数字签名是防止恶意软件入侵的重要步骤。RPM包签名由软件发布者使用私钥生成,用户可通过公钥验证包的完整性和来源真实性。以下是具体操作方法。

检查RPM包是否已签名要确认一个RPM包是否有数字签名,可使用以下命令:rpm -K package_name.rpm输出结果会显示四个部分:header、payload、MD5、SHA1 和 signature。重点关注“PGP”

或“RSA”

签名项,正常情况应显示“OK”

。例如:

package_name.rpm: digests signatures OK如果显示“NOT OK”

或“NOKEY”

,说明签名无效或未导入对应公钥。

导入并管理GPG公钥系统需要拥有正确的GPG公钥才能验证签名。大多数官方仓库的密钥已预装,但手动安装RPM时可能需手动导入。

导入公钥的方法如下:

下载公钥文件(通常为 .asc 或 .gpg 格式)

使用命令导入:

sudo rpm --import GPG-PUB-KEY.asc

查看当前已导入的密钥:

rpm -q gpg-pubkey确保所用密钥来自可信源,比如官方文档或安全渠道下载,避免中间人攻击。

强制验证签名再安装即使包有签名,RPM默认可能不会严格校验。建议始终启用签名检查。

安装时自动验证签名:

CentOS Linux 7.9.2009 CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。

下载sudo rpm -ivh package_name.rpm若签名缺失或不匹配,命令将报错并中止安装。

也可通过配置RPM宏强制所有安装操作都验证签名:编辑或创建~/.rpmmacros

文件,加入:

%_signature_checking yes%_pubkeys /etc/pki/rpm-gpg/使用YUM/DNF时启用签名验证YUM和DNF也支持GPG签名验证。确保仓库配置中启用了检查:检查/etc/yum.repos.d/中的repo文件,确认包含:gpgcheck=1 repo_gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7其中gpgcheck=1表示验证包签名,repo_gpgcheck=1验证整个仓库元数据签名,更安全。

执行安装前,系统会自动下载并使用指定密钥进行校验。

基本上就这些。只要坚持验证签名,就能大幅降低安装被篡改或伪造RPM包的风险。关键在于养成习惯:不跳过“NOKEY”警告,不强制绕过错误,只从可信源获取密钥和软件包。

相关文章