这是我第一次认为我最好检查一下我想安装的绑定软件的密钥。 所以我下载了我认为是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
我究竟做错了什么?
谢谢!
– 导入是用来导入密钥,而不是检查签名。
.asc文件通常是分离的GPG签名。 如果你有文件foo.tar.gz和foo.tar.gz.asc (或foo.tar.gz.sig ),那么你可以通过以下方式来validation文件foo.tar.gz :
gpg foo.tar.gz.asc
在你的情况下,文件名不匹配,所以你应该明确指定--verify选项。 根据gpg(1)的手册页面:
– 校验
假设第一个参数是一个签名文件或分离的签名,并validation它,而不产生任何输出。 没有参数,从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
一定要validation这个键。 理想情况下,你会遇到这个人,但没有这样做,看看其他人在这个关键(Linux发行版,朋友等)的信任。 请记住,GPG是一个信任networking。
也可以看看: