搜索

3.3. 使用 GPG 检查存储库元数据

download PDF

要检测和避免损坏的软件包,您可以使用 DNF 软件包管理器检查 RPM 软件包上的 GNU Privacy Guard (GPG)签名,以及检查存储库元数据是否已使用 GPG 密钥进行了签名。

您可以使用密钥 URL 设置 gpgkeys 字段,输入您要通过 https 进行检查的 gpgkey。或者,为了提高安全性,您还可以将整个密钥嵌入到 gpgkeys 字段中,来直接导入它,而不是直接从 URL 获取密钥。

先决条件

  • 您要用作存储库的目录存在,且包含软件包。

步骤

  1. 访问您要创建存储库的文件夹:

    $ cd repo/
  2. 运行 createrepo_c ,来从 RPM 软件包创建存储库:

    $ createrepo_c .
  3. 访问 repodata 的目录:

    $ cd repodata/
  4. repomd.xml 文件签名:

    $ gpg -u <_gpg-key-email_> --yes --detach-sign --armor /srv/repo/example/repomd.xml
  5. 要在存储库中启用 GPG 签名检查:

    1. 在存储库源中设置 check_repogpg = true
    2. 输入您要进行检查的 gpgkey。如果您的密钥可以通过 https 使用,请使用密钥的密钥 URL 设置 gpgkeys 字段。您可以根据需要添加任意数量的 URL 密钥。

      以下是一个示例:

      check_gpg = true
      check_ssl = true
      id = "signed local packages"
      name = "repository_name"
      type = "yum-baseurl"
      url = "https://local/repos/projectrepo/"
      check_repogpg = true
      gpgkeys=["https://local/keys/repokey.pub"]

      作为替代方案,直接在 gpgkeys 字段中添加 GPG 密钥,例如:

      check_gpg = true
      check_ssl = true
      check_repogpg
      id = "custom-local"
      name = "signed local packages"
      type = "yum-baseurl"
      url = "https://local/repos/projectrepo/"
      gpgkeys=["https://remote/keys/other-repokey.pub",
      '''-----BEGIN PGP PUBLIC KEY BLOCK-----
      …​
      -----END PGP PUBLIC KEY BLOCK-----''']
      • 如果测试没有找到签名,GPG 工具会显示一个类似如下的错误:

        $ GPG verification is enabled, but GPG signature is not available.
        This may be an error or the repository does not support GPG verification:
        Status code: 404 for http://repo-server/rhel/repodata/repomd.xml.asc (IP: 192.168.1.3)
      • 如果签名无效,GPG 工具会显示一个类似如下的错误:

        repomd.xml GPG signature verification error: Bad GPG signature

验证

  • 手动测试存储库的签名:

    $ gpg --verify /srv/repo/example/repomd.xml.asc
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.