Menu Close

第 4 章 高级主题

本节涵盖超出入门教程范围但对真实 RPM 打包很有用的主题。

4.1. 签名软件包

软件包经过签名,以确保没有第三方可以更改其内容。在下载软件包时,用户可以使用 HTTPS 协议添加额外的安全层。

对软件包进行签名有两种:

先决条件

  • 要能够签署软件包,您需要创建 GNU Privacy Guard(GPG)密钥,如创建 GPG 密钥 中所述。

4.1.1. 创建 GPG 密钥

以下流程描述了如何创建签名软件包所需的 GNU Privacy Guard(GPG)密钥。

步骤

  1. 生成 GNU Privacy Guard(GPG)密钥对:

    # gpg --gen-key
  2. 确认并查看生成的密钥:

    # gpg --list-keys
  3. 导出公钥:

    # gpg --export -a '<Key_name>' > RPM-GPG-KEY-pmanager

    将 <Key_name> 替换为您选择的实际名称。

  4. 将导出的公钥导入到 RPM 数据库中:

    # rpm --import RPM-GPG-KEY-pmanager

4.1.2. 配置 RPM 为软件包签名

要能够签署软件包,您需要指定 %_gpg_name RPM 宏。

以下流程描述了如何配置 RPM 以签名软件包。

步骤

  • $HOME/.rpmmacros 文件中定义 %_gpg_name 宏,如下所示:

    %_gpg_name Key ID

    使用 GNU Privacy Guard(GPG)密钥 ID 替换 Key ID,以用于签名。有效的 GPG 密钥 ID 值是创建密钥的用户的完整名称或电子邮件地址。

4.1.3. 在已经存在的软件包中添加签名

这部分论述了在没有签名的情况下构建软件包时最常见的情况。签名仅在软件包发布前添加。

要在软件包中添加签名,请使用 rpm-sign 软件包提供的 --addsign 选项。

通过多个签名,可以将软件包构建器的所有权路径记录到最终用户。

步骤

  • 在软件包中添加签名:

    $ rpm --addsign blather-7.9-1.x86_64.rpm
    注意

    您需要输入密码来解锁签名的机密密钥。

4.1.4. 在已经存在的软件包中添加签名的实际示例

这部分论述了在现有软件包中添加签名可能会很有用的示例。

公司的一个部门创建了软件包并使用部门的密钥对其进行签名。然后,公司总部检查软件包的签名,并将企业签名添加到软件包中,说明已签名软件包是验证的。

使用两个签名时,该软件包可让其为零售商采用方法。零售商会检查签名,如果匹配,也会添加其签名。

现在,这个软件包已成为希望部署该软件包的公司。检查软件包中的每个签名后,它们知道它是真实的副本。根据部署公司的内部控制,他们可以选择添加自己的签名,以通知其员工收到其公司批准。

4.1.5. 在已经存在的软件包中替换签名

以下流程描述了如何更改公钥而无需重建每个软件包。

步骤

  • 要更改公钥,请运行以下命令:

    $ rpm --resign blather-7.9-1.x86_64.rpm
    注意

    您需要输入密码来解锁签名的机密密钥。

--resign 选项还允许您更改多个软件包的公钥,如以下步骤所示。

步骤

  • 要更改多个软件包的公钥,请执行:

    $ rpm --resign b*.rpm
    注意

    您需要输入密码来解锁签名的机密密钥。