我第一次从 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 到计算机并手动接受此密钥的安装。
- 为什么 epel 需要在首次安装软件包时下载密钥?
- 如何在我的图像上自动安装此密钥,以便 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 种方式之一导入密钥:
使用
rpm --import http://download.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
(按照slm的建议)安装一个包,然后等待提示(就像我所做的那样)
使用epel提供的RPM包,它会同时安装repo和key。
sudo yum -y install http://mirror.pnl.gov/epel/6/i386/epel-release-6-8.noarch.rpm"
手动将密钥复制到正确的目录。
答案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 代码包中。这样你就只依赖于主傀儡机器的安全性。
让代码包安装证书。