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コンテナとホストの両方の出力は何ですか?