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
(例のように)省略できます。