使用gpg验证.asc文件而不导入KEYS文件。

时间:2017-09-06 10:12:23

标签: gnupg

我想创建脚本,下载和GPG验证文件到我的docker镜像。从apache docs开始,我知道,为了验证,我需要这样做:

gpg --import KEYS
gpg --verify downloaded_file.tgz.asc downloaded_file.tgz

我想省略第一步,因为它改变了某些文件"。这里的原因是我希望尽可能保持泊坞窗图像不受影响。我更喜欢简单地称呼:gpg --using-keys KEYS --verify file.tgz.asc file.tgz。可能吗?

我已尝试使用--no-default-keyring --keyring KEYS提及here,但我无法正确解释输出(打印Can't check signature: public key not found。当我删除{{1}时输出看起来很好,但我以前导入过KEYS文件,并且不知道如何取消它以查看清晰的结果)。

KEYS,.tgz和.tgz.asc文件来自Apache Kafka

1 个答案:

答案 0 :(得分:1)

我是gpg的新手,因此可以撒些盐,但是这样的东西对我来说足够好了。在debian上和gpg(GnuPG)2.1.18上进行了测试:

test.asc是我们不想导入的公共密钥,test.tar.bz2.asc是使用上述公共密钥签名的文件签名,test.tar.bz2是用于签名验证的文件。首先,我解除防盗密钥,然后使用它们来验证文件签名:

gpg --dearmor ./test.asc
gpg --dearmor ./test.tar.bz2.asc
gpg --dry-run --no-default-keyring --keyring ./test.asc.gpg --homedir ./ --verify ./test.tar.bz2.asc.gpg ./test.tar.bz2

当然gpg抱怨签名不受信任,并在当前文件夹中创建了trustdb:

gpg: WARNING: unsafe permissions on homedir '/tmp/./'
gpg: Signature made Mi 24 Apr 2019 21:52:46 CEST
gpg:                using RSA key xxxxxxxxxxxxxxxx
gpg: /tmp/.//trustdb.gpg: trustdb created
gpg: Good signature from "example security <security@example.com>" [unknown]
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: xxxx xxxx xxxx xxxx xxxx  xxxx xxxx xxxx xxxx xxxx

但此后失败:

gpg --dry-run  --homedir ./ --verify ./test.tar.bz2.asc.gpg ./test.tar.bz2
gpg --dry-run  --verify ./test.tar.bz2.asc.gpg ./test.tar.bz2
gpg --verify ./test.tar.bz2.asc.gpg ./test.tar.bz2

所以我认为该密钥未导入到通常的密钥数据库中。