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 密钥,便无法为客户端指派软件通道。