前几天我发现了一些非常有用的东西,我已经知道了一段时间的东西,我终于找到了它的用处。当您使用 GitHub 或 Codeberg 等公共 Git 服务并将 GPG 密钥分配给您的帐户时,您的公钥将在这些平台上公开。
如果您将.gpg
添加到配置文件末尾,许多 git 服务将在用户配置文件页面上托管用户公钥。因此,对于我的浏览器,请浏览https://github.com/cjerrington.gpg ,您将看到公钥。我认为部分原因是共享 GPG 密钥可能会让某些人感到困惑或困难,而这些服务试图帮助该平台的其他用户。
GPG 公钥被加密是有原因的,但是使用gpg
cli,您可以解码一些重要信息。我能够做的对我验证这些平台上的 GPG 密钥是否是最新的有帮助的是使用curl
,然后从公钥中读取数据。
curl -s https://github.com/cjerrington.gpg | gpg -n --show-keys \ --with-fingerprint --keyid-format = long
这将正确显示 GPG 密钥的指纹,还可以确认您是否从密钥服务器下载了公钥。
那么你为什么要这样做呢?在下载并可能将其导入到您的计算机之前可以确认密钥。确认某人发送给您的钥匙具有相同的指纹并进行了额外检查。
我想了解的另一个过程是您是否可以使用公共托管的公钥并使用它来确认和解密或验证本地文件的签名。
测试
为了测试这个理论,我创建了一个测试文件,对其进行签名,然后使用本示例中在 GitHub 上找到的公钥对其进行解密。我成功了,但必须下载文件,但不必导入密钥。您可能出于某种原因想要确认公钥的完全导入或只是暂时使用它。例如,很多时候,当您下载 Linux ISO 时,他们会提供有关如何使用 SHA256 哈希值和 GPG 密钥过程验证文件的说明。
例如,在验证说明中,有一个方便的复制和粘贴命令可以从密钥服务器导入密钥,但我们可能想确认要求我们下载和导入的密钥仍然属于 Ubuntu。在 GPG 部分,它要求从keyserver.ubuntu.com导入密钥0x46181433FBB75451
。因此我们可以搜索它并找到完整的密钥和 URL。当然,许多密钥服务器也已经以人类可读的格式向您显示公钥数据。
curl -s http://keyserver.ubuntu.com/pks/lookup?op = get & search = 0xc5986b4f1257ffa86632cba746181433fbb75451 \ | gpg -n --show-keys --with-fingerprint --keyid-format = long pub dsa1024/46181433FBB75451 2004 -12-30 [ SC ] Key fingerprint = C598 6B4F 1257 FFA8 6632 CBA7 4618 1433 FBB7 5451 uid Ubuntu CD Image Automatic Signing Key < [email protected] >
我们可以看到这些匹配。
在实践中
让我们创建一个文件,对其进行签名,然后验证它。
# Create file echo "This is a test file" > testfile.txt
对我刚刚创建的文件进行签名以创建testfile.txt.sig
文件。
# Sign file gpg --detach-sig --sign --output testfile.txt.sig testfile.txt
从 GitHub 获取公钥。在此过程中,我发现我需要将公钥实际保存到本地文件中,并删除新创建的文件中的 GPG 文本。然后,这将创建一个文件cjerrington.asc.gpg
。我们需要本地文件中的公钥以供下一步使用。
# Download public key curl -s https://github.com/cjerrington.gpg -o cjerrington.asc gpg --dearmor . \ cjerrington.asc
现在,将 gpg 设置为使用cjerrington.asc.gpg
文件作为密钥环来查看此密钥,而不是系统导入的密钥。
# Verify sig file gpg -v --no-default-keyring --keyring ./cjerrington.asc.gpg \ --verify ./testfile.txt.sig ./testfile.txt
verify
的结果。
gpg: Signature made Tue 11 Feb 2025 09:18:41 PM CST gpg: using EDDSA key 22A87774A7342FE3DF25E15D08528E69B3B9CA3E gpg: using pgp trust model gpg: Good signature from "Clayton Errington " gpg: binary signature, digest algorithm SHA256, key algorithm ed25519
包起来
也许这有效,因为我签署了一个文件并使用我自己的私钥来验证签名。然而,这也应该是收件人用来验证文件的类似过程。
这是一个很好的兔子整体,我可以去看看我可以用 GPG 做什么,并在下载和导入之前读取公钥进行一些额外的验证。
只需记住导入您信任和验证的密钥即可。如果您确实需要导入密钥以供长期使用,则可以这样做。有时需要短期验证文件,但不导入密钥。
通过电子邮件回复
原文: https://claytonerrington.com/blog/view-public-gpg-fingerprints/?utm_source=rss