通过传递在线托管而不是本地存储(即在密钥环中)的签名来使用 GPG 来验证签名的文件?

通过传递在线托管而不是本地存储(即在密钥环中)的签名来使用 GPG 来验证签名的文件?

对签名文件执行验证查询时是否可以传递 GnuPG 签名的 URL?

例如,而不是:

gpg --verify file.txt

有没有类似这样的变化:

gpg --import example.com/key.sig --verify file.txt

显然,您可以从密钥服务器导入并附加行,&&然后进行验证,但这并不能完全满足我的目的,所以我想知道是否有人可以建议替代方案。

答案1

我不完全确定你想要实现什么。签名文件的文件名未导入!我将答案分为两部分,具体取决于您实际想要实现的目标。我更改了示例 URI 以反映实际用途,但文件名对 GnuPG 来说根本不重要。

未导入密钥

当 GnuPG 验证签名文件时,它还会验证有效性的密钥。此操作要求密钥位于密钥环中。

如果你担心钥匙圈中没有经过验证的钥匙,可以考虑使用另一种$GNUPGHOME方法,比如

export GNUPGHOME=/tmp/gpg-verify
curl http://example.com/key.asc | gpg --import
gpg --verify file.txt
rm -r /tmp/gpg-verify

根据分离签名进行验证

如果要从 URI 加载(分离的)签名,请使用 curl 并将签名导入gpg。来自man gpg

--verify

假设第一个参数是签名文件或分离签名,并验证它而不生成任何输出。如果没有参数,则从中读取签名数据包STDIN

使用的命令行类似于

curl http://www.example.com/signature.asc | gpg --verify file.txt

答案2

您可以使用破折号来表示应该从 stdin 读取的文件:

curl -L https://exmple.com/file.txt.asc | gpg --verify - file.txt
curl -L https://exmple.com/file.txt | gpg --verify file.txt.asc -

相关内容