web-dev-qa-db-ja.com

puppet上のaptgpgキーを更新します

Puppetaptリポジトリの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モジュールを介して)更新できますか?

2
olliiiver

美容ソリューションではありませんが、次のことが私にとってはうまくいきます:

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:'",
}
2
olliiiver

これが私たちが使い始めたものです(ありがとう 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モジュール用に開いている チケットでの詳細な議論

3
peelman

GPGキーの更新:

はい、それは「外部コマンドを実行する」 exec リソースタイプを使用して可能です。 execが毎回実行されないようにするには、 nless を使用し、たとえばgrepを介してapt-key listの出力をチェック/解析します。

GPGキーの追加:

puppetlabs apt moduleapt :: key を提供し、GPGキーを追加します。それを使用するには、(ドキュメントから)の行に沿ってコードに何かを入れます:

apt::key { 'puppetlabs':
  id      => '47B320EB4C7C375AA9DAE1A01054B7A24BD6EC30',
  server  => 'pgp.mit.edu',
}

セキュリティノート:

短いキーIDを使用すると、重大なセキュリティ問題が発生し、衝突攻撃にさらされる可能性があります。 GPGキーを識別するために、常に完全なフィンガープリントを使用することをお勧めします。このモジュールは短いキーを許可しますが、それらを使用するとセキュリティ警告を発行します。

これがあなたにとって重要である理由のいくつかのより多くの情報:

短いOpenPGP鍵ID、たとえば0×2861A790は32ビット長です。それらは、同じキーIDを持つ別のキーによって簡単になりすまされることが示されています。長いOpenPGP鍵ID(たとえば、0xA1E6148633874A3D)は64ビット長です。それらは簡単に衝突可能であり、これも潜在的に深刻な問題です。

キーの暗号的に強力な識別子を処理する場合は、完全なフィンガープリントを使用する必要があります。短い、または長いキーIDに依存しないでください。 [...]

これに関するリファレンスと詳細情報。

1
gf_