第 4 章 高级主题
本节涵盖超出入门教程范围但对真实 RPM 打包很有用的主题。
4.1. 签名软件包
软件包经过签名,以确保没有第三方可以更改其内容。在下载软件包时,用户可以使用 HTTPS 协议添加额外的安全层。
为软件包签名有三种方法:
4.1.1. 创建 GPG 密钥
流程
- 生成 GNU Privacy Guard(GPG)密钥对: - gpg --gen-key - # gpg --gen-key- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 确认并查看生成的密钥: - gpg --list-keys - # gpg --list-keys- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 导出公钥: - gpg --export -a '<Key_name>' > RPM-GPG-KEY-pmanager - # gpg --export -a '<Key_name>' > RPM-GPG-KEY-pmanager- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 包含您为键选择的实际名称,而不是 <Key_name>。 
- 将导出的公钥导入到 RPM 数据库中: - rpm --import RPM-GPG-KEY-pmanager - # rpm --import RPM-GPG-KEY-pmanager- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.1.2. 在已经存在的软件包中添加签名
这部分论述了在没有签名的情况下构建软件包时最常见的情况。签名仅在软件包发布前添加。
					要在软件包中添加签名,请使用 rpm-sign 软件包提供的 --addsign 选项。
				
通过多个签名,可以将软件包构建器的所有权路径记录到最终用户。
步骤
- 在软件包中添加签名: - rpm --addsign blather-7.9-1.x86_64.rpm - $ rpm --addsign blather-7.9-1.x86_64.rpm- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 您需要输入密码来解锁签名的机密密钥。 
4.1.3. 检查带有多个签名的软件包的签名
流程
- 要检查带有多个签名的软件包的签名,请运行以下命令: - rpm --checksig blather-7.9-1.x86_64.rpm - $ rpm --checksig blather-7.9-1.x86_64.rpm blather-7.9-1.x86_64.rpm: size pgp pgp md5 OK- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - rpm --checksig命令的输出中的两个- pgp字符串显示软件包已被签名两次。
4.1.4. 在已经存在的软件包中添加签名的实际示例
这部分论述了在现有软件包中添加签名可能会很有用的示例。
公司的一个部门创建了软件包并使用部门的密钥对其进行签名。然后,公司总部检查软件包的签名,并将企业签名添加到软件包中,说明已签名软件包是验证的。
使用两个签名时,该软件包可让其为零售商采用方法。零售商会检查签名,如果匹配,也会添加其签名。
现在,这个软件包已成为希望部署该软件包的公司。检查软件包中的每个签名后,它们知道它是真实的副本。根据部署公司的内部控制,他们可以选择添加自己的签名,以通知其员工收到其公司批准。
4.1.5. 在已经存在的软件包中替换签名
这个步骤描述了如何在不重建每个软件包的情况下更改公钥。
流程
- 要更改公钥,请运行以下命令: - rpm --resign blather-7.9-1.x86_64.rpm - $ rpm --resign blather-7.9-1.x86_64.rpm- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 您需要输入密码来解锁签名的机密密钥。 
					--resign 选项还允许您更改多个软件包的公钥,如以下步骤所示。
				
步骤
- 要更改多个软件包的公钥,请执行: - rpm --resign b*.rpm - $ rpm --resign b*.rpm- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 您需要输入密码来解锁签名的机密密钥。 
4.1.6. 在构建时签名软件包
流程
- 使用 - rpmbuild命令构建软件包:- rpmbuild blather-7.9.spec - $ rpmbuild blather-7.9.spec- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用 - --addsign选项使用- rpmsign命令签署软件包:- rpmsign --addsign blather-7.9-1.x86_64.rpm - $ rpmsign --addsign blather-7.9-1.x86_64.rpm- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- (可选)验证软件包的签名:
rpm --checksig blather-7.9-1.x86_64.rpm
$ rpm --checksig blather-7.9-1.x86_64.rpm
blather-7.9-1.x86_64.rpm: size pgp md5 OK在构建和签名多个软件包时,请使用以下语法避免多次输入 Pretty Good Privacy (PGP)密码短语。
rpmbuild -ba --sign b*.spec
$ rpmbuild -ba --sign b*.spec请注意,您应该输入密码来解锁签名的 secret 密钥。