puppet apt 存储库 PGP 密钥几天前已过期
/etc/apt/trusted.gpg.d//puppetlabs-keyring.gpg
----------------------------------------------
pub 4096R/4BD6EC30 2010-07-10 [expired: 2016-07-08]
uid Puppet Labs Release Key (Puppet Labs Release Key)
当然可以手动更新
apt-key adv --recv-keys --keyserver keys.gnupg.net 4BD6EC30
但是,它可以通过自动运行的 Puppet 进行更新吗(例如通过 Puppet apt 模块)?
答案1
这就是我们开始使用的(感谢加思克):
$key = '4BD6EC30'
exec { 'apt-key puppetlabs':
path => '/bin:/usr/bin',
unless => "apt-key list | grep '${key}' | grep -v expired",
command => "apt-key adv --keyserver keyserver.ubuntu.com \
--recv-keys ${key}",
}
更多讨论apt 模块的票已打开
答案2
虽然不是一个美容解决方案,但以下方法对我有用:
exec { 'update_apt_key':
command => '/usr/bin/apt-key adv --recv-keys --keyserver keys.gnupg.net 47B320EB4C7C375AA9DAE1A01054B7A24BD6EC30',
onlyif => "/usr/bin/apt-key adv --list-public-keys --with-fingerprint --with-colons | grep -B 1 47B320EB4C7C375AA9DAE1A01054B7A24BD6EC30 | head -n 1 | grep -e '^pub:e:'",
}
答案3
更新 GPG 密钥:
是的,可以使用执行资源类型,即“执行外部命令”。为了防止exec
每次都运行,请使用除非并检查/解析输出apt-key list
,例如通过grep
。
添加 GPG 密钥:
这puppetlabs apt 模块提供apt::key,它添加了 GPG 密钥。要使用它,请将以下内容放入您的代码中(摘自文档):
apt::key { 'puppetlabs':
id => '47B320EB4C7C375AA9DAE1A01054B7A24BD6EC30',
server => 'pgp.mit.edu',
}
安全说明:
使用短密钥 ID 会带来严重的安全问题,可能会让您遭受碰撞攻击。我们建议您始终使用完整指纹来识别您的 GPG 密钥。此模块允许使用短密钥,但如果您使用它们,则会发出安全警告。
更多关于为什么这对你很重要的信息:
短 OpenPGP 密钥 ID(例如 0x2861A790)长度为 32 位。事实证明,它们很容易被具有相同密钥 ID 的另一个密钥欺骗。长 OpenPGP 密钥 ID(例如 0xA1E6148633874A3D)长度为 64 位。它们很容易发生冲突,这也是一个潜在的严重问题。
如果您想要处理密钥的强加密标识符,则应使用完整指纹。您永远不应依赖短密钥 ID,甚至长密钥 ID。[...]