如何自动接受 epel gpg 密钥

如何自动接受 epel gpg 密钥

我第一次从 epel 安装软件包时,系统会提示我是否要导入 GPG 密钥。

注意安装redis时有2个“Is this ok”提示吗?

[root@us-devops-build02 yum.repos.d]# yum install redis
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
.. truncated for readability

Total download size: 213 k
Installed size: 668 k
Is this ok [y/N]: y
Downloading Packages:
redis-2.4.10-1.el6.x86_64.rpm                                                                                                                                                                                                                                                                          | 213 kB     00:00     
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Retrieving key from http://download.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
Importing GPG key 0x0608B895:
 Userid: "EPEL (6) <[email protected]>"
 From  : http://download.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
Is this ok [y/N]: y

这会导致 puppet 在新配置的计算机上失败,除非我首先 ssh 到计算机并手动接受此密钥的安装。

  1. 为什么 epel 需要在首次安装软件包时下载密钥?
  2. 如何在我的图像上自动安装此密钥,以便 puppet 不会失败?

答案1

yum 要求提供密钥的原因是 /etc/pki/rpm-gpg 中不存在该密钥

ls /etc/pki/rpm-gpg/ | column
RPM-GPG-KEY-CentOS-6        RPM-GPG-KEY-CentOS-Security-6    RPM-GPG-KEY-CentOS-Debug-6
RPM-GPG-KEY-CentOS-Testing-6    RPM-GPG-KEY-puppetlabs

您可以通过以下 4 种方式之一导入密钥:

  1. 使用rpm --import http://download.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6 (按照slm的建议)

  2. 安装一个包,然后等待提示(就像我所做的那样)

  3. 使用epel提供的RPM包,它会同时安装repo和key。

    sudo yum -y install http://mirror.pnl.gov/epel/6/i386/epel-release-6-8.noarch.rpm"

  4. 手动将密钥复制到正确的目录。

答案2

任何有价值的存储库都会对其提供的 RPM 进行签名。用于确认 RPM 签名的密钥是您第一次下载和安装的密钥。

如果没有这个密钥,就不可能保证给定存储库中 RPM 的真实性,因此这是一个极其重要的功能,不应该因为烦人而很快被忽视。

如果您想自动安装密钥,您可以尝试直接安装密钥,然后再从存储库安装任何 RPM,如下所示:

$ rpm --import <url>

-or-

$ yum -y ...

例子

$ sudo rpm --import \
    http://download.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6 

或者您可以尝试将选项设置为yum假设是:

$ yum -y install redis

您也可以手动下载这些文件并将它们放入此目录中/etc/pki/rpm-gpg/。下次运行时,yum他们rpm将选取此处存在的这些文件。

参考

答案3

关于软件包/仓库签名,这里发生了一些事情:

  • 密钥(对于默认存储库)存储在“/etc/pki/rpm-gpg”中。然而,这只是一个供参考的存储位置,并不能让它们受到包管理器的信任(至少从 RHEL/CentOS 8 开始)。
  • 存储库配置(在“/etc/yum.repos.d”中)定义用于对存储库和包进行签名的 GPG 公钥的 URL。对于默认存储库,该密钥 URL 通常具有file://引用“/etc/pki/rpm-gpg”中的密钥的方案。在您的情况下,EPEL 配置引用http://URL。这当然意味着您最初通过不安全的通道获取密钥,从而有效地创建了一个豆腐情况。
  • 对于软件包安装,必须将密钥导入到 RPM 系统的密钥存储中。您看到的第二个提示与此相关。rpm --import允许您在安装软件包之前手动添加密钥。看如何在安装 Linux 软件包之前验证它们有关管理该密钥存储的更多信息。
  • 除了包的默认签名之外,签名检查关于存储库元数据可以通过repo_gpgcheck=1在 repo 配置中进行设置来启用。为此,必须将密钥导入到位于“/var/lib/yum/*/gpgdir”(旧版)或“/var/cache/dnf/*/pubring”(RHEL/CentOS 8)的另一个密钥存储中。当密钥尚未添加到这些存储中时,系统可能还会要求您导入它们,并且提示看起来与 RPM 密钥存储的提示类似。

答案4

傀儡?将证书放入 Puppet 代码包中。这样你就只依赖于主傀儡机器的安全性。

让代码包安装证书。

相关内容