搜索

第 4 章 高级主题

download PDF

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

4.1. 签名软件包

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

为软件包签名有三种方法:

4.1.1. 创建 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-sign 软件包提供的 --addsign 选项。

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

步骤

  • 在软件包中添加签名:

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

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

4.1.3. 检查带有多个签名的软件包的签名

流程

  • 要检查带有多个签名的软件包的签名,请运行以下命令:

    $ rpm --checksig blather-7.9-1.x86_64.rpm
    blather-7.9-1.x86_64.rpm: size pgp pgp md5 OK

    rpm --checksig 命令的输出中的两个 pgp 字符串显示软件包已被签名两次。

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

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

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

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

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

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

这个步骤描述了如何在不重建每个软件包的情况下更改公钥。

流程

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

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

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

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

步骤

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

    $ rpm --resign b*.rpm
    注意

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

4.1.6. 在构建时签名软件包

流程

  1. 使用 rpmbuild 命令构建软件包:

    $ rpmbuild blather-7.9.spec
  2. 使用 --addsign 选项使用 rpmsign 命令签署软件包:

    $ rpmsign --addsign blather-7.9-1.x86_64.rpm
  3. (可选)验证软件包的签名:
$ 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

请注意,您应该输入密码来解锁签名的 secret 密钥。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.