公開鍵ブロックセットのopenpgp(gpg)署名を確認する方法

公開鍵ブロックセットのopenpgp(gpg)署名を確認する方法

OpenPGP(キーワード:gpg)公開鍵の所定のホワイトリストと比較して、そのうちの1つの署名が有効であることを確認する必要があるコンテンツがあります。

ホワイトリストは別々に管理されます。理想的には一連のASCIIベースの公開鍵ブロックですが、ファイルごとに1つの公開鍵があるディレクトリも大丈夫です。ホワイトリストは別々に管理されるので、gpgのキーリング管理機能は使用したくありません。コンテンツがキーセットのキーで署名されると通過します。さまざまな信頼レベルや信頼ネットワークなどはありません。

理想的には、次のインターフェースを持つプログラムが必要です。

some-program KEYS_FILE CONTENT SIGFILE

または例の引数を介して

some-program /etc/ourapp/ourapps_trusted_pubkeys.asc /var/lib/ourapp/newcontent.tar.gz /var/lib/ourapp/newcontent.tar.gz.asc

gpgを使用してこれを行う最速の方法は次のとおりです。

  • 一時ファイルをキーリングとして使用
  • --keyringを使用してgpgにこれを指定し、--no-default-keyringも提供します。
  • ourapps_trusted_pubkeys.asc のキーを繰り返して、一度に 1 つずつ取得します。
  • キーをもう一度繰り返して、gpg --import-ownertrustを使用して信頼できるキーに設定します。
  • gpg --verify 実行

これは一般的なユースケースであると考えられるものに大きな努力です。私は何を見逃していますか? some-program(1)に似たツールはありますか?

答え1

簡単な署名検証のためのプログラムgpgv/gpgv2問題は、エクスポートされたキーファイルがキーリングとして認識されないことです。したがって、最初のステップでキーリングを作成する必要があります。

cd /some/tmp/dir || exit 1
test -f pubring.gpg && { rm -f pubring.gpg || exit 1; }
gpg --no-options --no-default-keyring --keyring ./pubring.gpg \
  --secret-keyring ./secring.gpg --import /etc/ourapp/ourapps_trusted_pubkeys.asc

これで利用可能なキーリングファイルが/some/tmp/dir/pubring.gpgあります。gpgv

gpgv --keyring /some/tmp/dir/pubring.gpg \
  /var/lib/ourapp/newcontent.tar.gz.asc /var/lib/ourapp/newcontent.tar.gz

データファイルのパスが署名されていないパスである場合.asc(例のように)省略できます。

関連情報