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

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

最佳答案

您需要导入公钥:C3C45C06

可以通过三个步骤完成。

  1. 查找公钥 ID:

    $ gpg gcc-4.7.2.tar.gz.sig gpg:签名于 2012 年 20 月 20 日,12:30:44 CEST 使用 DSA key ID C3C45C06 制作 gpg:无法检查签名:没有公钥

  2. 从 key 服务器导入公钥。通常不需要选择 key 服务器,但可以通过 --keyserver <server> 来完成。 Keyserver examples.

    $ gpg --recv-key C3C45C06 gpg:从hkp服务器keys.gnupg.net请求 key C3C45C06 gpg: key C3C45C06:已导入公钥“Jakub Jelinek jakub@redhat.com” gpg:找不到最终可信的 key gpg:处理总数:1 gpg:导入:1

如果命令错误并超时,you may be behind a firewall that is blocking the default gpg port. Try using the `--keyserver' option with port 80 (几乎所有防火墙都允许端口 80 b/c 进行网页浏览):

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

    $ gpg gcc-4.7.2.tar.gz.sig gpg:签名于 2012 年 20 月 20 日,12:30:44 CEST 使用 DSA key ID C3C45C06 制作 gpg:来自“Jakub Jelinek jakub@redhat.com”的良好签名[未知] gpg:警告:此 key 未经可信签名认证! gpg:没有迹象表明该签名属于所有者。 主 key 指纹:33C2 35A3 4C46 AA3F FB29 3709 A328 C3A2 C3C4 5C06

  • 输出应该显示“Goodsignature”。

    <小时/>

    gpg: WARNING: This key is not certified with a trusted signature!

    是为了另一个问题;)

    关于shell - 如何使用.sig文件验证下载的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15331015/

    相关文章:

    c# - 如何更改表适配器的命令超时

    linux - 如何使用find和exec执行多条命令

    bash - 如何杀死shell的所有子进程?

    powershell - 如何将带空格的路径传递给脚本

    linux - 如何在保留您键入的文字的同时打印新消息?

    matlab - 函数之外的 nargin 是什么?

    linux - 腻子 : Execute a shell script onto the host machine

    linux - 如何从 htop 命令中提取内核的 CPU 负载?

    bash - 通过 CMake 运行 bash 命令

    php - 使用PHP构建gradle Android项目