97

当我下载GCC时,它也有一个.sig文件,我认为它是为了验证下载的文件而提供的。(我从这里下载了 GCC )。

但我不知道我应该如何使用它。我试过gpg了,但它抱怨公钥。

[root@localhost src]# gpg --verify gcc-4.7.2.tar.gz.sig gcc-4.7.2.tar.gz
gpg: Signature made Thu 20 Sep 2012 07:30:44 PM KST using DSA key ID C3C45C06
gpg: Can't check signature: No public key
[root@localhost src]# 

如何使用文件验证下载的.sig文件?

4

4 回答 4

105

您需要导入公钥:C3C45C06

可以分三步完成。

  1. 查找公钥 ID:

    $ gpg gcc-4.7.2.tar.gz.sig gpg: Signature made Čt 20. září 2012, 12:30:44 CEST using DSA key ID C3C45C06 gpg: Can't check signature: No public key

  2. 从密钥服务器导入公钥。通常不需要选择密钥服务器,但可以使用--keyserver <server>. 密钥服务器示例。

    $ gpg --recv-key C3C45C06 gpg: 从 hkp 服务器 keys.gnupg.net 请求密钥 C3C45C06 gpg: key C3C45C06: public key "Jakub Jelinek jakub@redhat.com" 导入 gpg: 没有找到最终信任的密钥 gpg: 处理的总数: 1 gpg: 进口: 1

如果命令错误超时,您可能位于阻止默认 gpg 端口的防火墙后面。尝试使用带有端口 80 的 `--keyserver' 选项(几乎所有防火墙都允许端口 80 b/c 进行 Web 浏览):

$ gpg --keyserver hkp://${HOSTNAME}:80 --recv-keys ${KEY_ID}
  1. 验证签名:

    $ gpg gcc-4.7.2.tar.gz.sig gpg: Signature made Čt 20. září 2012, 12:30:44 CEST using DSA key ID C3C45C06 gpg: G​​ood signature from "Jakub Jelinek jakub@redhat.com" [未知] gpg: 警告:此密钥未经可信签名认证!gpg:没有迹象表明签名属于所有者。主键指纹:33C2 35A3 4C46 AA3F FB29 3709 A328 C3A2 C3C4 5C06

输出应显示“良好的签名”。


gpg:警告:此密钥未经可信签名认证!

是另一个问题;)

于 2015-04-19T16:57:02.180 回答
28

这种其他途径对于验证 GNU 项目(例如Octave)特别有用,因为在任何密钥服务器中都可能找不到他们签名请求的密钥。

来自https://ftp.gnu.org/README

还有 .sig 文件,其中包含上述文件的分离 GPG 签名,由生成它们的同一脚本自动签名。

您可以使用来自以下位置的密钥环文件验证gnu 项目文件的签名

https://ftp.gnu.org/gnu/gnu-keyring.gpg

包含密钥环文件、要验证的源文件和签名文件的目录中,使用的命令是:

$ gpg --verify --keyring ./gnu-keyring.gpg foo.tar.xz.sig

于 2014-04-24T09:33:08.227 回答
2

您必须在公共密钥服务器中搜索给定的密钥 ID:在您的情况下ID C3C45C06 ,将找到的密钥导入本地密钥库,然后验证应该没问题。我使用的是 Ubuntu 12.04,它带有 Seahorse 密钥管理软件。在密钥导入之前,我看到了这个:

~/Downloads$ gpg --verify --keyring ./gnu-keyring.gpg icecat-31.5.0.en-US.linux-x86_64.tar.bz2.sig icecat-31.5.0.en-US.linux-x86_64.tar.bz2
gpg: Signature made  9.03.2015 (пн) 22,35,52 EET using RSA key ID D7E04784
gpg: Can't check signature: public key not found

密钥导入后,我看到了这个:

~/Downloads$ gpg --verify --keyring ./gnu-keyring.gpg icecat-31.5.0.en-US.linux-x86_64.tar.bz2.sig icecat-31.5.0.en-US.linux-x86_64.tar.bz2
gpg: Signature made  9.03.2015 (пн) 22,35,52 EET using RSA key ID D7E04784
gpg: Good signature from "Ruben Rodriguez (GNU IceCat releases key) <ruben@gnu.org>"
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: A573 69A8 BABC 2542 B5A0  368C 3C76 EED7 D7E0 4784
于 2015-03-10T12:22:43.077 回答
0

根据这个http://gcc.gnu.org/mirrors.html应该是 Jakub Jelinek 并且有效。我不知道你会从哪里得到他的公钥。

于 2013-03-24T02:07:40.650 回答