RPM-GPG-KEY详解

本文介绍了Linux系统中RPM包的签名机制及其验证方法,包括GPG公钥与私钥的概念、RPM包签名原理及如何使用命令行工具进行签名验证。

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

      今天用yum安装软件,遇到了Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL问题,为了加深印象,特别搜索了RPM-GPG-KEY到底是作什么的,发现了这篇文章,放在这里,方便以后想不起来时查看。

原文地址:http://linux.chinaunix.net/techdoc/system/2007/09/26/968723.shtml

原文如下:

GPG在Linux上的应用主要是实现官方发布的包的签名机制。
GPG分为公钥及私钥。
公钥:顾名思意,即可共享的密钥,主要用于验证私钥加密的数据及签名要发送给私钥方的数据。
私钥:由本地保留的密钥,用于签名本地数据及验证用公钥签名的数据。
               
实现原理(以Red Hat签名为例):
1>RH在发布其官方的RPM包时(如本地RHEL光盘及FTP空间包),会提供一个GPG密钥文件,即所谓的公钥。
2>用户下载安装这个RPM包时,引入RH官方的这个RPM GPG公钥,用来验证RPM包是不是RH官方签名的。
导入GPG-KEY:
可以去https://www.redhat.com/security/team/key/或/etc/pki/rpm-gpg查找相应的GPG密钥,并导入到RPM:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY
签名及加密概念:
签名与加密不是一个概念。
签名类似于校验码,用于识别软件包是不是被修改过,最常用的的就是我们的GPG及MD5签名,原方使用一定的字符(MD5)或密码(GPG私钥)与软件进行相应的运算并得到一个定长的密钥,。
加密是用一定的密钥对原数据进行修改,即使程序在传输中被截获,只要它不能解开密码,就不能对程序进行修改,除非破坏掉文件,那样我们就知道软件被修改过了。
RPM验证方法:
1>验证安装的整个软件包的文件
rpm -V crontabs-1.10-8
2>验证软件包中的单个文件
rpm -Vf /etc/crontab
如果文件没有被修改过,则不输出任何信息。
3>验证整个软件包是否被修改过
rpm -Vp AdobeReader_chs-7.0.9-1.i386.rpm
.......T   /usr/local/Adobe/Acrobat7.0/Reader/GlobalPrefs/reader_prefs
S.5....T   /usr/local/Adobe/Acrobat7.0/bin/acroread
4>验证签名
rpm -K AdobeReader_chs-7.0.9-1.i386.rpm
AdobeReader_chs-7.0.9-1.i386.rpm: sha1 md5 OK
验证结果含意:
S :file Size differs
M :Mode differs (includes permissions and file type)
5 :MD5 sum differs
D :Device major/minor number mis-match
L :readLink(2) path mis-match
U :User ownership differs
G :Group ownership differs
T :mTime differs

 

    

05-30
### 使用 `rpm -Vf` 验证文件或软件包完整性 在 Linux 系统中,RPM 包管理工具提供了多种命令用于验证已安装的软件包及其文件的完整性。其中,`rpm -Vf` 是一个专门用于验证特定文件是否属于某个 RPM 包,并检查该文件完整性的命令。 #### 命令格式与功能 ```bash rpm -Vf <文件路径> ``` - `-V`:表示验证(Verify)模式,用于检查文件的完整性。 - `-f`:指定要验证的文件路径,确保该文件属于某个 RPM 包[^3]。 #### 验证过程详解 执行 `rpm -Vf` 命令时,系统会检查指定文件的以下属性: - 文件大小 - MD5 校验值 - 符号链接 - 模式(权限) - 用户所有者 - 组所有者 - 设备号(针对字符设备或块设备) - 修改时间 如果上述任何一项不匹配原始 RPM 包中的记录,则会在终端输出相应的标记和差异信息。 #### 示例 假设需要验证 `/bin/ls` 文件的完整性,可以运行以下命令: ```bash rpm -Vf /bin/ls ``` 如果文件未被修改且完好无损,则不会有任何输出。如果有差异,输出可能类似于以下内容: ``` S.5....T c /bin/ls ``` #### 输出解释 每个字符代表不同的验证结果: - `S`:文件大小不同 - `M`:模式(权限)不同 - `5`:MD5 校验值不同 - `D`:设备号不同 - `L`:符号链接不同 - `U`:用户所有者不同 - `G`:组所有者不同 - `T`:修改时间不同 - `c`:表示这是一个配置文件[^3]。 #### 已安装软件包的完整性验证 若需验证整个软件包的所有文件,可使用以下命令: ```bash rpm -V <软件包名称> ``` 例如,验证 `bash` 软件包的完整性: ```bash rpm -V bash ``` #### 数字证书与校验 为了确保 RPM 包的来源可信,可以通过导入数字证书来增强验证的安全性。例如,导入 CentOS 的 GPG 密钥以验证其官方 RPM 包的真实性: ```bash rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 ``` 此操作确保只有签名匹配的 RPM 包才能通过验证[^2]。 #### 注意事项 - 如果文件已被修改但仍然有效(如手动调整权限或内容),`rpm -Vf` 会报告差异。此时需要根据实际情况判断是否需要恢复原文件。 - 对于配置文件,建议备份后再进行修改,以免影响系统正常运行。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值