如何验证 PGP 密钥是否已导入 RPM?

Mat*_*ley 13 rpm gpg

可以通过以下方式导入密钥:

rpm --import /path/to/key

但是以后如何知道是否已经导入了这个密钥?尝试重新导入它会失败并出现错误,我正在尝试避免这种情况,因为我正在使用 Puppet 安装密钥。

Tor*_*ian 10

您可以使用rpm -qi gpg-pubkey-<version>-<release>. 如果已安装,rpm 将为您提供有关它的所有信息,如果没有,它将以返回值 1 退出,因此您可以向您的 puppet 配方添加一个unless参数:

exec { "rpm --import /path/to/package":
  # ...
  unless => "rpm -qi gpg-pubkey-<version>-<release> > /dev/null 2>&1"
}
Run Code Online (Sandbox Code Playgroud)

  • 通过我发现的一些代码更好的方法:`KEYFILE=/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release; KEYID=$(echo $(gpg --throw-keyids &lt; $KEYFILE)|cut -c11-18|tr [AZ] [az]); rpm -q gpg-pubkey-$KEYID` (2认同)
  • 剪切将您绑定到特定布局,这在我的 RHEL6 测试系统上不起作用。并且 gpg 现在包括子密钥和 pub 密钥。所以,我最终使用了 `KEYID=$(gpg --throw-keyids $KEYFILE | sed -n '/^pub/s|^[^/]*/\([[:alnum:]]*\) 。 *|\1|p' | tr [[:upper:]] [[:lower:]])` (2认同)

Ign*_*ams 5

导入的每个密钥都会添加一个 rpmdb 条目gpg-pubkey-<left(hex(fingerprint), 8)>-<encoded import date>。只需gpg-pubkey在 rpmdb 中检查该名称 ( ) 和适当的版本(十六进制密钥指纹的前 8 个字符)。