GPG 密钥

客户端使用 GPG 密钥在安装软件包之前检查其真实性。 只有受信任的软件才能在客户端上安装。

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

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

操作系统要么直接信任自己的 GPG 密钥,要么至少将其与最小系统一起安装。 但是,由不同 GPG 密钥签名的第三方软件包需要手动处理。 客户端可以在不信任 GPG 密钥的情况下成功启动。 然而,在密钥被信任之前,您无法安装新的客户端工具包或更新它们。

客户端现在使用为软件通道输入的 GPG 密钥信息来管理受信任的密钥。 当将带有 GPG 密钥信息的软件通道分配给客户端时,当通道被刷新或从该通道安装第一个软件包时,该密钥被信任。

软件通道页面中的 GPG 密钥 URL 参数可以包含多个用“空白”分隔的密钥 URL。 如果这是一个文件 URL,则必须在使用软件通道之前将 GPG 密钥文件部署到客户端。

基于Red Hat的客户端的客户端工具通道的GPG密钥会部署到客户端的`/etc/pki/rpm-gpg/`中,并可通过文件URL引用。

对于 SUSE Liberty Linux 客户端的 GPG 密钥,情况也是如此。

仅当为客户端指派了软件通道时,系统才会导入并信任这些密钥。

由于基于 Debian 的系统仅签署元数据,因此无需为单个通道指定额外的密钥。 如果用户配置自己的 GPG 密钥以签署元数据,如 储存库元数据 中的 "使用您自己的 GPG 密钥" 所述,则该密钥的部署和信任将自动执行。

1. 用户定义的 GPG 密钥

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

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

这些密钥在基于RPM的操作系统上部署到`/etc/pki/rpm-gpg/,在Debian系统上部署到/usr/share/keyrings/`:

为您希望部署该密钥的客户端定义 pillar 键 [literal`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 字段。 导航到 软件  管理  通道 并选择您要修改的通道。 将值`GPG key URL`添加到`file:///etc/pki/rpm-gpg/my_first_gpg.key`。

2. 引导脚本中的 GPG 密钥

过程:升级在客户端上使用启动脚本信任 GPG 密钥
  1. 在SUSE Multi-Linux Manager服务器上,在命令提示符下,检查`/srv/www/htdocs/pub/`目录的内容。 该目录包含所有可用的公钥。 记录与您正在注册的客户端分配的通道相关的密钥。

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

    uyuni-gpg-pubkey-0d20833e.key

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

信任 GPG 密钥对客户端的安全性至关重要。 决定需要哪些密钥并可以信任哪些密钥是管理员的任务。 当 GPG 密钥不被信任时,软件通道无法分配给客户端。