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


85

当我下载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文件验证下载的文件?

Answers:


98

您需要导入公钥: C3C45C06

可以通过三个步骤完成。

  1. 查找公钥ID:

    $ gpg gcc-4.7.2.tar.gz.sig gpg:由Čt20签名。září2012,12:30:44 CEST使用DSA密钥ID C3C45C06 gpg:无法检查签名:无公钥

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

    $ gpg --recv-key C3C45C06 gpg:从hkp服务器上请求密钥C3C45C06 :1 gpg:进口:1

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

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

    $ gpg gcc-4.7.2.tar.gz.sig gpg:签名使用Čt20。září2012,12:30:44 CEST使用DSA密钥ID C3C45C06 gpg:来自“ Jakub Jelinek jakub@redhat.com”的好签名[未知] gpg:警告:此密钥未经过可信任的签名证明!gpg:没有迹象表明签名属于所有者。主键指纹:33C2 35A3 4C46 AA3F FB29 3709 A328 C3A2 C3C4 5C06

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


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

是另一个问题;)


8
很棒的分步说明!
马修·克劳斯

4
如果需要验证的文件是gnupg(不在问题中),则gnupg站点上可以使用SHA-1校验和来验证第一个gnupg下载。
10厘升,2016年

在签名验证期间,gpg将tarball文件及其对应的.sig文件作为一个单元进行处理。如果tarball丢失或重命名,则gpg提供了指定tarball名称的机会。
Andrew P.

我有一个RSA密钥,并且不能与--keyserver该列表一起使用,只能得到一个,但似乎不值得信任,这很奇怪,因为我在GNU coreutils该软件包上尝试使用它。
user10089632

另外,如果gpg警告“未提供命令,请猜测您的意思”,请gpg --verify gcc-4.7.2.tar.gz.sig改用。
xdavidliu

23

这另一条途径对于验证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


3
但是,如果我们谈论安全性,那么最好使用HTTPS连接:https
Maxim,

3
有趣的是,我在这里明确地指出如何验证八度!:)
罗恩·詹森-我们都是Monica,

谢谢。我在任何密钥服务器中都找不到Bash维护者的密钥,但这是我需要验证其源代码签名的内容。
Anthony Geoghegan

1
对于八度,请参见有关gpg4win应用的答案:superuser.com/questions/1268544/…–
马丁

1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.