
私はDebianベースのDockerイメージを使用しており、キーリングには1つのキーしか使用できません。
$ gpg -K
/tmp/test-keyring/pubring.kbx
-------------------------------
sec> rsa2048 2012-01-16 [C] [expires: 2024-05-15]
CB522FE0379DDF40A93400D7E4BC91FACDA9A65B
Card serial no. = 00nn 00nnnnnn
uid [ unknown] John Doe <[email protected]>
ssb# rsa2048 2012-01-16 [S] [expires: 2024-05-14]
ssb rsa3072 2012-01-16 [S] [expires: 2024-05-15]
ここに示すように、3つのキーがあります。
- ラベル付きのマスターキーは
>
スマートカードにあります。鍵検証専用として表示されており、署名用には使用できません。 #
2番目の補助署名キー(表示)のプライベート部分はここにありません。したがって、署名には使用できません。- 3 番目の補助署名キーには、使用可能な非公開部分があります。ここで署名するために使用できる唯一のキーです。
ここでも最後のキーは、署名目的で使用できる唯一のキーです。
ああ、何らかの理由でGnuPGはそれを見ることができません:
$ echo test | gpg --clearsign
gpg: no default secret key: Unusable public key
gpg: [stdin]: clear-sign failed: Unusable public key
ただし、ユーザーIDを直接指定すると、署名に問題はありません。
$ echo test | gpg --clearsign --default-key [email protected]
gpg: using "[email protected]" as default secret key for signing
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
test
-----BEGIN PGP SIGNATURE-----
マニュアルによるとすぐに使えます。
--default-key name 署名のデフォルトのユーザー ID として name を使用します。このオプションを使用しない場合、デフォルトのユーザーIDはキーリングで見つかった最初のユーザーIDです。
私はGnuPG 2.2.19を使用しています:
$ gpg --version
gpg (GnuPG) 2.2.19
libgcrypt 1.8.5
私はすでに申請していますDockerの既知の回避策GPG_TTY
、役に立たない。
動作させるにはどうすればよいですか?
答え1
問題を解決するために入れたり入れたりすることができます。default-key [email protected]
default-key CB522FE0379DDF40A93400D7E4BC91FACDA9A65B
~/.gnupg/gpg.conf
答え2
正しく読んだ場合は、署名用の2つのサブキーがありますが、そのうちの1つはオフラインです。
ssb# rsa2048 2012-01-16 [S] [expires: 2024-05-14]
ssb rsa3072 2012-01-16 [S] [expires: 2024-05-15]
私は見たいですssb>
:両方で子供が次に置き換えられたことを確認してください。切り株。これはおそらくgnupgが混乱している理由です。
同じソースから:
#このキーの秘密キーがまったく利用できないことを示します。これはオフラインマスターキーの場合です。
私の設定は、署名、暗号化、認証のための3つのサブキーがあるのと同じです。 3つのサブキーはすべてスマートカードにあります。
sec# rsa4096 2011-01-15 [C]
xxxxxxxxxxxxxxxxxxxx
uid [ unknown] xxxxxxxxxxxxx
ssb> rsa4096 2011-01-15 [S]
ssb> rsa4096 2011-01-15 [E]
ssb> rsa4096 2011-01-15 [A]
仕事に署名しようとしているときにスマートカードがリーダーにいるかどうかを知りたいです。
答え3
スマートカードを取り外して署名操作を繰り返すと、問題は消えます。これはGnuPGのバグです、次のバージョンでは修正されるようです。
Dockerized環境はこれとは関係ありません。