Command line 在不安装密钥的情况下验证gpg签名

Command line 在不安装密钥的情况下验证gpg签名,command-line,signature,gnupg,Command Line,Signature,Gnupg,如何在不安装公钥的情况下验证gpg签名(cli或w/node js)?我确实有公钥,但不想将其添加到密钥环中。有什么提示吗 谢谢, Florian这里有一个shell脚本,我就是为了这个目的而使用的。它创建一个临时密钥环,在其中安装指定的公钥,运行指定的命令,然后删除该临时密钥环 请注意,这将从密钥服务器安装密钥。调整它以使用磁盘上已有的密钥应该不难(我应该添加一个选项来实现这一点) 更新:见 它的作用类似于gpg命令,但需要一个额外的初始参数来指定8位密钥id 示例用法: $ gpg core

如何在不安装公钥的情况下验证gpg签名(cli或w/node js)?我确实有公钥,但不想将其添加到密钥环中。有什么提示吗

谢谢,
Florian

这里有一个shell脚本,我就是为了这个目的而使用的。它创建一个临时密钥环,在其中安装指定的公钥,运行指定的命令,然后删除该临时密钥环

请注意,这将从密钥服务器安装密钥。调整它以使用磁盘上已有的密钥应该不难(我应该添加一个选项来实现这一点)

更新:见

它的作用类似于
gpg
命令,但需要一个额外的初始参数来指定8位密钥id

示例用法:

$ gpg coreutils-8.9.tar.gz.sig
gpg: Signature made Tue 04 Jan 2011 07:04:25 AM PST using RSA key ID 000BEEEE
gpg: Can't check signature: public key not found
$ gpg-tmp 000BEEEE coreutils-8.9.tar.gz.sig
gpg: keyring `/home/kst/000BEEEE-keyring.gpg' created
gpg: requesting key 000BEEEE from hkp server subkeys.pgp.net
gpg: key 000BEEEE: public key "Jim Meyering <jim@meyering.net>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
gpg: Signature made Tue 04 Jan 2011 07:04:25 AM PST using RSA key ID 000BEEEE
gpg: Good signature from "Jim Meyering <jim@meyering.net>"
gpg:                 aka "Jim Meyering <meyering@gnu.org>"
gpg:                 aka "Jim Meyering <meyering@redhat.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 155D 3FC5 00C8 3448 6D1E  EA67 7FD9 FCCB 000B EEEE
$gpg coreutils-8.9.tar.gz.sig
gpg:签名于2011年1月4日星期二上午7:04:25使用RSA密钥ID 000BEEE
gpg:无法检查签名:未找到公钥
$gpg tmp 000BEEEE coreutils-8.9.tar.gz.sig
gpg:keyring`/home/kst/000beee keyring.gpg'已创建
gpg:正在从hkp服务器subkeys.pgp.net请求密钥000beee
gpg:key 000BEEE:已导入公钥“Jim Meyering”
gpg:未找到最终受信任的密钥
gpg:处理的总数:1
gpg:imported:1(RSA:1)
gpg:签名于2011年1月4日星期二上午7:04:25使用RSA密钥ID 000BEEE
gpg:“吉姆·梅林”的签名很好
gpg:又名“吉姆·梅林”
gpg:又名“吉姆·梅林”
gpg:警告:此密钥未经可信签名认证!
gpg:没有迹象表明签名属于所有者。
主键指纹:155D 3FC5 00C8 3448 6D1E EA67 7FD9 FCCB 000B EEEE
请记住,这绝对不会告诉您密钥的可信度,但它作为完整性检查非常有用


(我想知道Jim Meyering在得到那把钥匙之前生成了多少把钥匙。)

我不需要太多,
gpg--dry run
(或者
gpg-n
)为我工作。我通过自制在Mac上运行GPG1.4.12,但这似乎是一个标准选项。不知道它与这里提到的其他方法相比如何。

这对我不起作用(GPG1.4.16,LinuxMint17)
gpg——试运行coreutils-8.9.tar.gz.sig
给我“
gpg:无法检查签名:找不到公钥
”。(我的钥匙圈里没有吉姆·梅林的钥匙。)嗯。你说得对。两年后,我无法复制它。我尝试了几乎所有的方法,例如,
gpg--dry run--trust model direct--keyserver options auto key retrieve--auto key locate keyserver--keyserver keys.gnupg.net--verify options pka lookup--verify coreutils-8.9.tar.gz
,但它坚持说
gpg:无法检查签名:找不到公钥
。好吧,我想如果你真的想避免使用脚本,你可以编写命令来代替使用一个临时home/keyring,然后删除它。但GPG的重点是建立信任:这就是为什么他们很难做到这一点。在GPG的辩护中,它确实说--“干运行”已经实现了一半,这当然是您希望在这样的安全特性中看到的。在这里,dry run阻止命令添加到keyring,这意味着verify永远不知道要使用什么键(显然)。当我使用它的时候,我肯定已经加了一把钥匙,所以我想“试运行”基本上什么都没做。(Oh和
验证选项pka查找
只是添加额外的检查,它不会自动下载…)
$ gpg coreutils-8.9.tar.gz.sig
gpg: Signature made Tue 04 Jan 2011 07:04:25 AM PST using RSA key ID 000BEEEE
gpg: Can't check signature: public key not found
$ gpg-tmp 000BEEEE coreutils-8.9.tar.gz.sig
gpg: keyring `/home/kst/000BEEEE-keyring.gpg' created
gpg: requesting key 000BEEEE from hkp server subkeys.pgp.net
gpg: key 000BEEEE: public key "Jim Meyering <jim@meyering.net>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
gpg: Signature made Tue 04 Jan 2011 07:04:25 AM PST using RSA key ID 000BEEEE
gpg: Good signature from "Jim Meyering <jim@meyering.net>"
gpg:                 aka "Jim Meyering <meyering@gnu.org>"
gpg:                 aka "Jim Meyering <meyering@redhat.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 155D 3FC5 00C8 3448 6D1E  EA67 7FD9 FCCB 000B EEEE