GnuPG 2、gpg-agent
およびループバックピンエントリー
GnuPG 2.0以降では、--passphrase-...
-options --batch
も適用される場合にのみ考慮されます。からman gpg
:
このパスフレーズは、オプション--batch
も指定されている場合にのみ使用されることに注意してください。これは、GnuPGバージョン1.xとは異なります。
GnuPG 2.0の有効なコマンドは次のとおりです。
gpg --batch --passphrase-fd 0 --import <path>
さらに、GnuPG 2.1以降、gpg-agent
すべての秘密鍵操作を処理し、パスフレーズも要求します。この背後にある考え方は、暗号化の最も重要な部分を処理する小さなコアアプリケーションを持ち、潜在的に多くのバグとセキュリティ問題のある(比較的)大きなGnuPGに他のすべてを実行させることです。デフォルトでgpg-agent
はgpg
、パスフレーズを照会しませんが、ユーザーに直接質問しようとします(無人ビルドでは明らかに失敗します)。ただし、最後のエスケープがあります。パスフレーズのクエリ--pinentry-mode loopback
を作成gpg-agent
するgpg
ために使用できますが、これは前述のようにセキュリティに影響を与えるgpg-agent
ため、ループバックピンエントリを許可するように構成する必要もあります。
に次の行を追加します~/.gnupg/gpg-agent.conf
。
allow-loopback-pinentry
これで、GnuPG 2.1以降で次のコマンドを使用できるようになります。
gpg --batch --pinentry-mode loopback --passphrase-fd 0 --import <path>
gpg-agent
ソケットを渡す
秘密鍵をDockerコンテナにインポートするよりも優れたオプションは、通常、ホストに秘密鍵を格納(およびロック解除)し、gpg-agent
ソケットをDockerコンテナに渡すことです。この方法では、重要な秘密がDockerコンテナーに入力されることはありません。また、イメージレイヤーに保存され、偶然に公開されることはありません。
gpg --version
コンテナとホストの両方の出力は何ですか?