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

问题描述 投票:0回答:4

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

shell command-line command signature verify
4个回答
111
投票

您需要导入公钥:

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: requesting key C3C45C06 from hkp server keys.gnupg.net
    gpg: key C3C45C06: public key "Jakub Jelinek <[email protected]>" imported
    gpg: no ultimately trusted keys found
    gpg: Total number processed: 1
    gpg:               imported: 1
    

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

$ 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: Good signature from "Jakub Jelinek <[email protected]>" [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
    

输出应该显示“Goodsignature”。


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

用于另一个问题;)


31
投票

这种其他途径对于验证 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


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) <[email protected]>"
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

-2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.