我正在使用基于Debian的Docker映像,并且密钥环中只有一个可用的密钥:
$ 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]
如您所见,这里有三个键:
>
有的主键位于智能卡上。它被标记为仅认证密钥,因此不能用于签名。#
在此处不存在。因此,它不能用于签名。同样,这里的最后一个密钥是唯一可用于签名目的的密钥。
las,由于某种原因,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使用name作为签名的默认用户ID。如果未使用,则默认用户ID是在秘密密钥环中找到的第一个用户ID。
我正在使用GnuPG 2.2.19:
$ gpg --version
gpg (GnuPG) 2.2.19
libgcrypt 1.8.5
我已将已知的Docker解决方法GPG_TTY
应用于,但没有成功。
我该怎么做才能使其正常工作?
如果碰巧拔出智能卡并重复签名操作,问题将消失。这是一个GnuPG错误,看来它将在下一发行版中修复。
Dockerized环境与此无关。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句