使用特定的密钥加密和签名

Naf*_*Kay 25 gpg

我有一个 OpenPGP 智能卡密钥 (YubiKey NEO) 以及安装在我的 GnuPG 密钥环中的本地密钥。

我想用卡的密钥加密和签署文件,而不是密钥环中的密钥。如何指定我想用什么密钥签名?

如果我的文件系统密钥 id 是DEADBEEF并且我的智能卡密钥是DEADBEE5,我该如何使用该密钥进行签名?

Hau*_*ing 23

使用-u/选择签名密钥--local-user

gpg --local-user 0xDEADBEE5 --sign file
Run Code Online (Sandbox Code Playgroud)

可以多次给出此选项以组合多个密钥的签名:

gpg --local-user 0xDEADBEE5 --local-user 0x12345678 --sign file
Run Code Online (Sandbox Code Playgroud)

  • 我认为@Anthon 在他上面的评论中的意思是“--default-key”。在我的经验中,`--local-user` 和 `--default-key` 之间的一个区别是,如果不存在匹配的键,第一个会失败,而第二个将回退到其他键。出于这个原因,我会非常谨慎地将 `--default-key` 放在脚本中。 (5认同)

Ant*_*hon 19

您应该指定--default-key

gpg -s --default-key DEADBEE5 input > output
Run Code Online (Sandbox Code Playgroud)

然后检查

gpg -d < output | head -1
Run Code Online (Sandbox Code Playgroud)

gpg man页面(--sign部分):

用于签名的密钥是默认选择的,也可以使用 --local-user 和 --default-key 选项进行设置。

  • `--local-user` 和 `--default-key` 之间的区别在于,如果你指定一个不存在的键,`--local-user` 会报错。使用`--default-key`,它将忽略不存在的密钥并使用密钥环中的第一个密钥。 (3认同)