7
A
回答
6
这里有一个shell脚本,我使用的只是目的。它创建一个临时密钥环,在其中安装指定的公钥,运行指定的命令,然后删除临时密钥环。
请注意,这将从密钥服务器安装密钥。调整它以使用磁盘上已有的密钥并不困难(并且我应该添加一个选项来做到这一点)。
更新:见https://github.com/Keith-S-Thompson/gpg-tmp
#!/bin/sh
keyid=$1
shift
case "$keyid" in
????????)
;;
*)
echo "Usage: $0 key args..." 1>&2
exit 1
esac
tmp_keyring=$HOME/$keyid-keyring.gpg
gpg --no-default-keyring --keyring $tmp_keyring --recv-keys $keyid
gpg --no-default-keyring --keyring $tmp_keyring "[email protected]"
rm -f $tmp_keyring
它的作用就像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 <[email protected]>" 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 <[email protected]>"
gpg: aka "Jim Meyering <[email protected]>"
gpg: aka "Jim Meyering <[email protected]>"
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
请记住,这告诉你绝对没有关于密钥的可信度,但它是作为一个完整性检查是有用的。
(我不知道吉姆Meyering多少个键产生之前,他得到了一个。)
2
我并不需要太多,gpg --dry-run
(或gpg -n
)为我工作。我通过Homebrew在Mac上运行gpg 1.4.12,但它似乎是一个标准选项。不知道它与这里提到的其他方法相比如何。
相关问题
- 1. gpg:跳过“XXBDXX4E”:密钥不可用。 GPG:签名失败:不可用密钥
- 2. 为什么git使用GPG密钥而不是使用SSH密钥签名?
- 3. 不可能GPG签名验证
- 4. 使用不同密钥大小的PGP/GPG签名和加密
- 5. 使用Perl验证GPG文件签名
- 6. 使用gpg对加密密钥进行数字签名
- 7. gpg - 导出密钥
- 8. 在Docker安装中添加详细的新GPG密钥
- 9. GPG密钥检索失败Hadoop Bigtop安装
- 10. 为什么源码树寻找gpg密钥,而我还没有配置签名?
- 11. 你如何找到gpg密钥的名称? (用于maven-gpg-plugin)
- 12. 签名加密验证不成功opensaml
- 13. GPG SECURITY:如何验证emailID和GPG公钥?
- 14. GoDaddy SSL证书密钥库安装Tomcat7
- 15. 验证Firebase密钥
- 16. 验证reCAPTCHA密钥
- 17. tortoisesvn:如何使用密钥验证而不是密码?
- 18. Git失去了GPG密钥
- 19. PHP Laravel验证数据密钥名称
- 20. 使用PHP签名或API密钥验证
- 21. 使用公共密钥端点验证JWT签名
- 22. saml签名验证,无法恢复密钥异常
- 23. 使用对称密钥(AES -128)签名并验证消息
- 24. 从不验证Microsoft认证API密钥
- 25. 使用自签名证书而不安装在cert store中
- 26. gpg:解密失败:没有密钥
- 27. Python + GPG(编辑密钥更改密码)
- 28. 验证码api密钥
- 29. 密钥输入验证
- 30. xsd密钥未被验证
这对我不起作用(gpg 1.4.16,Linux Mint 17)。 'gpg --dry-run coreutils-8.9.tar.gz.sig'给我“'gpg:无法检查签名:找不到公钥”。 (我的钥匙圈里没有Jim Meyering的钥匙。) – 2014-10-06 20:43:05
呵呵。你是对的。两年后,我无法复制它。我尝试过每一个例如'gpg --dry-run --trust-model direct --keyserver-options auto-key-retrieve --auto-key-locate keyserver --keyserver keys.gnupg.net --verify-options pka-lookups --verify coreutils-8.9.tar.gz.sig coreutils-8.9.tar.gz'但它坚持说'gpg:无法签名:找不到公钥'。那么,我想如果你真的想避免一个脚本,你可以编写命令来改为使用临时的home/keyring,然后删除它。但是,GPG的重点在于建立信任:这就是为什么他们要做到这一点。 – 2014-10-06 22:33:40
在GPG的辩护中,它确实表示“--dry-run”已经实施了一半,这当然是您想要在这样的安全功能中看到的。在这里,干运行防止命令添加到密钥环,这意味着验证不知道使用什么密钥(显然)。当我使用它时,我必须已经添加了一个密钥,所以“干运行”基本上没有,我想。 (哦,'验证选项pka-lookups'只是增加了额外的检查,它不会自动下载...) – 2014-10-06 22:35:30