使用签名者的公钥块从命令行验证 GPG tarball?

使用签名者的公钥块从命令行验证 GPG tarball?

我有一个脚本可以从中获取 Gcrypt 的五个源包GnuPG 下载。我还获取了每个包的签名。例如:

FILE=libassuan-2.2.0
wget -q "ftp://ftp.gnupg.org/gcrypt/libassuan/$FILE.tar.bz2.sig" -O "$FILE.tar.bz2.sig"
wget -q "ftp://ftp.gnupg.org/gcrypt/libassuan/$FILE.tar.bz2" -O "$FILE.tar.bz2"
gpg --verify "$FILE.tar.bz2.sig" "$FILE.tar.bz2"

尝试验证下载时,出现错误“无法检查签名:未找到公钥”。这是预料之中的,因为 VM 相当干净,并且没有 GPG 钥匙串(我想它就是这么叫的)。

我有来自签名密钥页面,它位于名为的文件中gpg-signers.pem。但我不知道如何将其与 GPG 一起使用。

我搜索过手册页,但我不知道如何将公钥块(gpg-signers.pem)传递给命令(gpg --verify)。有一个--sign-key,但它用于“用你的密钥签署公钥”;并且不指定签名者的密钥来验证签名。

我该如何传递gpg-signers.pemgpg --verify验证包裹上的签名?

答案1

我们必须在检查签名之前导入密钥。

$ gpg --import gpg-signers.pem
gpg: key 4F25E3B6: public key "Werner Koch (dist sig)" imported
$ gpg --verify libassuan-2.2.0.tar.bz2.sig libassuan-2.2.0.tar.bz2
gpg: Signature made Thu 11 Dec 2014 21:13:07 JST using RSA key ID 4F25E3B6
gpg: Good signature from "Werner Koch (dist sig)"

如果我们不想将密钥永久存储在本地数据库中,请使用一次性密钥环。

$ gpg --no-default-keyring --keyring 1.keyring --import gpg-signers.pem
gpg: keyring 1.keyring created
...
$ gpg --no-default-keyring --keyring 1.keyring --verify ...
...
$ trash 1.keyring

根据设计,我们收到钥匙带外

虽然不如 HTTPS 方便,但我们可以通过 下载 Werner Koch 的公钥gpg --recv-key 4F25E3B6。此命令在许多具有预配置密钥服务器的发行版上开箱即用。编写一些脚本查看签名文件并自动下载签发此签名的人使用的密钥很容易。但决定权仍然在我们手中,以确定是否信任此人。

相关内容