我想创建一个下载任务,验证一个没有公钥的文件,我将下载该文件,并得到答案是否适合下一步。
我用 linux-4.12.7.tar.gz 和 linux-4.12.7.tar.sign 完成了这个示例(https://www.kernel.org/signature.html)。
gpg 正常,我有:
~# xz -cd linux-4.12.7.tar.xz | gpg --verify linux-4.12.7.tar.sign -
gpg: assuming signed data in 'linux-4.12.7.tar'
gpg: Signature made Sun 13 Aug 2017 04:35:18 CEST
gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E
gpg: Can't check signature: public key not found
gpg 与 status-fd,我有:
~# xz -cd linux-4.12.7.tar.xz | gpg --status-fd 1 --verify linux-4.12.7.tar.sign -
gpg: assuming signed data in 'linux-4.12.7.tar'
[GNUPG:] NEWSIG
gpg: Signature made Sun 13 Aug 2017 04:35:18 CEST
gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E
[GNUPG:] ERRSIG 38DBBDC86092693E 1 8 00 1502591718 9
[GNUPG:] NO_PUBKEY 38DBBDC86092693E
gpg: Can't check signature: public key not found
我被阻止了,如何自动下载公钥,并验证它是否适合下一步?如果下一步顺利,如果不行则发出警报停止。
手动的,但是怎么拿钥匙自动做呢?
~# gpg --keyserver hkp://keys.gnupg.net --recv-keys 38DBBDC86092693E
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 38DBBDC86092693E: public key "Greg Kroah-Hartman (Linux kernel stable release signing key) <[email protected]>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1
当它好的时候:
~# xz -cd linux-4.12.7.tar.xz | gpg --verify linux-4.12.7.tar.sign -
gpg: Signature made dim. 13 août 2017 04:35:18 CEST
gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E
gpg: Good signature from "Greg Kroah-Hartman (Linux kernel stable release signing key) <[email protected]>" [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: 647F 2865 4894 E3BD 4571 99BE 38DB BDC8 6092 693E
最后,如果效果好,就开始下一步。
提前致谢。
答案1
您可以输入keyserver-options auto-key-retrieve
,~/.gnupg/gpg.conf
它会获取您没有但想要检查/加密的任何密钥。
但我真的不明白为什么在这种情况下需要它,因为如果您要信任下载的 blob 提供的任何密钥,那么它就违背了签名验证的目的。