这是我第一次觉得我最好检查一下要安装的绑定软件的密钥。所以我下载了我认为是 OpenPGP 密钥的东西……
$ wget ftp://ftp.isc.org/isc/bind9/9.9.4/bind-9.9.4.tar.gz.sha1.asc
...然后我尝试像这样“导入”这个密钥...
$ gpg --import bind-9.9.4.tar.gz.sha1.asc
...但我收到此错误消息:
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
我究竟做错了什么?
谢谢!
答案1
--import
用于导入密钥,而不是检查签名。
该.asc
文件通常是分离的 GPG 签名。如果您有文件foo.tar.gz
和foo.tar.gz.asc
(或foo.tar.gz.sig
),则可以foo.tar.gz
使用以下方法验证该文件:
gpg foo.tar.gz.asc
但是,对于您来说,文件名与该模式不匹配,因此您应该--verify
明确指定选项。根据 gpg(1) 手册页:
- 核实
假设第一个参数是签名文件或分离签名,并验证它而不生成任何输出。如果没有参数,则从 STDIN 读取签名包。如果只给出了 sigfile,则它可能是完整签名或分离签名,在这种情况下,签名的内容应该放在没有“.sig”或“.asc”扩展名的文件中。如果有多个参数,则第一个应该是分离签名,其余文件是签名的内容。要从 STDIN 读取签名的内容,请使用“-”作为第二个文件名。出于安全原因,分离签名无法从 STDIN 读取签名材料,除非以上述方式表示它。
因此:
$ gpg --verify bind-9.9.4.tar.gz.sha1.asc bind-9.9.4.tar.gz
gpg: Signature made Wed 18 Sep 2013 09:25:43 PM CEST using RSA key ID 189CDBC5
gpg: Can't check signature: No public key
现在,可以使用以下方式导入该密钥:
gpg --recv-keys 189CDBC5
一定要验证此密钥。理想情况下,您会与该人见面,但如果做不到这一点,请查看其他人对此密钥的信任程度(Linux 发行版、朋友等)。请记住,GPG 是关于信任的网络。
也可以看看: