GPG 密钥

安装软件包之前,客户端会使用 GPG 密钥检查这些软件包的真实性。只有可信软件才能安装在客户端上。

在大多数情况下,您无需调整 GPG 设置即可在您的客户端上安装软件。

可以直接对 RPM 软件包签名,而基于 Debian 的系统仅会对元数据签名并使用校验和链来保障软件包的安全。大多数基于 RPM 的系统除了使用已签名软件包外,还会使用已签名元数据。

1. 在客户端上信任 GPG 密钥

操作系统要么直接信任自己的 GPG 密钥,要么至少将它们与最小系统一起安装,但通过其他 GPG 密钥签名的第三方软件包需要手动处理。客户端可以在不信任 GPG 密钥的情况下成功引导,但除非密钥受信任,否则您将无法安装新的客户端工具软件包或更新软件包。

Salt 客户端现在使用为软件通道输入的 GPG 密钥信息来管理受信任密钥。如果将具有 GPG 密钥信息的软件通道指派给客户端,当通道刷新后或从此通道安装第一个软件包后,系统会立即信任该密钥。

软件通道页面中的 GPG 密钥 URL 参数可以包含以空格分隔的多个密钥 URL。如果其为文件 URL,则必须在使用软件通道之前在客户端上部署 GPG 密钥文件。

Red Hat 客户端的客户端工具通道的 GPG 密钥会部署到客户端的 /etc/pki/rpm-gpg/ 中,并可通过文件 URL 引用。具有扩展支持的客户端的 GPG 密钥同样部署到该路径。仅当为客户端指派了软件通道时,系统才会导入并信任这些密钥。

由于基于 Debian 的系统仅会对元数据签名,因此不需要为各个通道指定确切的密钥。如果用户按 为储存库元数据签名 中的“使用自己的 GPG 密钥”所述配置了自己的 GPG 密钥来对元数据签名,系统会自动部署并信任该密钥。

1.1. 用户定义的 GPG 密钥

用户可以自行定义要部署到客户端的 GPG 密钥。

通过提供某些 pillar 数据并在 Salt 文件系统中提供 GPG 密钥文件,系统会自动将它们部署到客户端。

这些密钥会分别部署到 /etc/pki/rpm-gpg/(在基于 RPM 的操作系统上)和 /usr/share/keyrings/(在 Debian 系统上)中:

为您要将密钥部署到的客户端定义 pillar 键 custom_gpgkeys 并列出密钥文件名。

cat /srv/pillar/mypillar.sls
custom_gpgkeys:
  - my_first_gpg.key
  - my_second_gpgkey.gpg

此外,在 Salt 文件系统中创建名为 gpg 的目录,并将 custom_gpgkeys pillar 数据中所指定的 GPG 密钥文件存储在该目录下。

ls -la /srv/salt/gpg/
/srv/salt/gpg/my_first_gpg.key
/srv/salt/gpg/my_second_gpgkey.gpg

密钥现在会部署到客户端的 /etc/pki/rpm-gpg/my_first_gpg.key/etc/pki/rpm-gpg/my_second_gpgkey.gpg 中。

最后一步是将 URL 添加到软件通道的“GPG 密钥 URL”字段中。请导航到软件  管理  通道,然后选择要修改的通道。将值 file:///etc/pki/rpm-gpg/my_first_gpg.key 添加到 GPG 密钥 URL中。

1.2. 引导脚本中的 GPG 密钥

过程:在客户端上使用引导脚本信任 GPG 密钥
  1. 在 SUSE Manager 服务器上的命令提示符处,检查 /srv/www/htdocs/pub/ 目录的内容。此目录包含所有可用的公共密钥。记下为您正在注册的客户端指派的通道适用的密钥。

  2. 打开相关的引导脚本,找到 ORG_GPG_KEY= 参数并添加所需的密钥。例如:

    uyuni-gpg-pubkey-0d20833e.key

    您无需删除任何以前存储的密钥。

信任 GPG 密钥对于客户端的安全非常重要。由管理员来决定需要哪些密钥,可以信任哪些密钥。如果不信任 GPG 密钥,便无法为客户端指派软件通道。