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

时间:2013-03-11 04:02:56

标签: shell command-line command signature verify

当我下载GCC时,它还有一个.sig文件,我认为它是为了验证下载的文件而提供的。 (我从here下载了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 个答案:

答案 0 :(得分:66)

您需要导入公钥: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>完成。 Keyserver examples.

$ gpg --recv-key C3C45C06
gpg: requesting key C3C45C06 from hkp server keys.gnupg.net
gpg: key C3C45C06: public key "Jakub Jelinek <jakub@redhat.com>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1

3)验证签名:

$ 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: Good signature from "Jakub Jelinek <jakub@redhat.com>" [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: 33C2 35A3 4C46 AA3F FB29  3709 A328 C3A2 C3C4 5C06

输出应该说“好签名”。


  

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

是另一个问题;)

答案 1 :(得分:18)

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

来自http://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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您必须在公钥服务器中搜索给定的密钥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