为 Git Commit 添加 GPG 签名

status
Published
type
Post
slug
git-commit-with-gpg
date
Sep 19, 2023
tags
Git
Linux
Config
summary
本文介绍了如何使用 GPG 来为 Git Commit 添加签名。首先需要安装 GPG,并生成密钥对。然后将公钥导入到 GitHub 上,配置本机的 Git 使用该密钥对进行签名。配置完成后,每次提交 commit 时,都会使用相应的私钥进行签名,GitHub 会验证签名的有效性,并展示一个可信标识。
之前在 V2 以及其他论坛上都有有人发现异常的 commit 记录——明明是别人的提交却显示为了自己。导致此现象的原因是 git commit 时,相应的信息均来源于 git 配置好的邮箱/用户名,git 本身并没有对此进行校验,也即默认状态下,我们可以通过配置伪装为任意用户。要解决此问题,可以使用 GPG 来签名 commit 。
GPG(GNU Privacy Guard)签名是一种通过非对称加密算法创建的数字签名,用于验证文件的来源和完整性。通过使用私钥对文件进行签名,接收者可以使用公钥来验证文件的签名是否有效。如果签名有效,则表明文件未被篡改且是来自预期的来源。
notion image
不同操作系统安装方法可以在GnuPG 官方下载页面 看到。

命令操作

notion image
notion image
notion image

上传公钥至 GitHub

复制上面输出的以 -----BEGIN PGP PUBLIC KEY BLOCK----- 开头并以 -----END PGP PUBLIC KEY BLOCK----- 结尾的公钥信息。 打开 GitHub 设置中的 SSH and GPG keys ,点击 New GPG key,将刚才复制的内容粘贴到 Key 中,Title 随意,完成添加。
notion image

本机 Git 配置

完成上述配置后,在进行 git commit 操作时,git 便会使用相应的私钥来为 commit 内容签名。git push 后,GitHub 会使用上传的公钥来验证该签名后的commit,验证通过会展示一个可信标识。
notion image
notion image
 
若命令执行失败,可通过 export GIT_TRACE=1 追踪更多细节进行排查。
 
 
参考信息
 

2020 - 2024 © HK