如何验证其他人的签名提交?

信息安全 gnupg 代码签名 github
2021-08-27 12:35:48

正如在这个相关问题中所确定的,github 使用他们的 GPG 密钥对从他们的应用程序所做的提交进行签名4AEE18F83AFDEB23在网上,我可以看到标记为“已验证”的提交。但是当我尝试在本地验证它们时,我无法:

$ git log --show-signature

commit 1bd20e9f7ed0860dc1971957b61ea25aeea499a1
gpg: Signature made Tue  6 Feb 00:04:43 2018 AEDT
gpg:                using RSA key 4AEE18F83AFDEB23
gpg: Can't check signature: No public key
Merge: c1218d5 0dde09c
Author: Brendan Roy <br3ndanr@gmail.com>
Date:   Tue Feb 6 00:04:43 2018 +1100

    Merge pull request #1 from bmon/pullreq

    this is a test

1bd20e9是 github 代表我提交的。如何验证提交是由 github 提交的?

2个回答

我不会从这里的答案中盲目地接受 GPG 密钥,而是会做“正确”的事情并从合理的来源获取公钥。GitHub 在以下地址托管他们的 Web 流 GPG 公钥:

https://github.com/web-flow.gpg

如果你决定信任这个来源,并且相信它是 GitHub 逻辑上提供它的公共 GPG 密钥的地方,你可以使用以下命令导入它:

curl https://github.com/web-flow.gpg | gpg --import

GPG 是关于信任的,了解密钥的来源是了解您是否信任密钥的关键部分。导入此密钥后,如果您确定您认为该密钥是有效的,并且它属于据称属于的人,您可以对密钥进行签名,可选择将您的签名发布到公钥服务器,公开承认您相信密钥本身是有效的。

您需要在 GPG 钥匙串中安装公共 GPG 密钥的副本,以验证签名。

curl 'https://sks-keyservers.net/pks/lookup?op=get&search=0x4AEE18F83AFDEB23' | gpg --import

或者

gpg --keyserver hkp://pgp.mit.edu --search-keys 0x4AEE18F83AFDEB23