我想创建脚本,下载和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。
答案 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
所以我认为该密钥未导入到通常的密钥数据库中。