第 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 密钥。