傀儡存储库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模块)吗?
这是我们开始使用(感谢garthk ):
$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模块打开一张票的更多讨论
不是一个美容解决scheme,但下面的工作对我来说:
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:'", }
更新GPG密钥:
是的,这可以使用exec资源types,即“执行外部命令”。 为了防止exec每次运行,使用除非和检查/parsingapt-key list的输出,例如通过grep 。
添加GPG密钥:
puppetlabs apt模块提供了apt :: key ,它添加了GPG密钥。 要使用它,请沿着(从文档)的行添加代码:
apt::key { 'puppetlabs': id => '47B320EB4C7C375AA9DAE1A01054B7A24BD6EC30', server => 'pgp.mit.edu', }
安全说明:
使用短密钥ID存在严重的安全问题,可能会让您面临碰撞攻击。 我们build议您始终使用完整的指纹识别您的GPG密钥。 该模块允许使用短键,但是如果使用它们,则会发出安全警告。
一些更多的信息为什么这应该对你很重要:
短OpenPGP密钥ID,例如0×2861A790,长度为32位。 他们已被certificate是很容易被另一个密钥欺骗与相同的密钥ID。 长OpenPGP密钥ID(例如0xA1E6148633874A3D)是64位长。 它们非常可怕,这也是一个潜在的严重问题。
如果要处理密钥的encryption标识符,则应使用完整的指纹。 你永远不要依赖短的,甚至长的密钥ID。 […]
参考和更多的信息。