GPG使用与介绍 & 并且应用到Git中实现签名提交Github
GPG(GNU Privacy Guard)是一种遵循OpenPGP标准的开源加密软件。我们可以用于加密内容,可以使用到文件、邮件等地方进行加密,例如加密了邮件后,除非有私钥不然谁也无法解密得知邮件中的内容。
在使用 git commit
时,项目要求使用GPG签名有以下作用:
- 防篡改
签名确保提交内容未被篡改,从提交时到验证时内容保持一致。 - 不可否认性
提交者无法否认自己的签名,因为签名与私钥绑定,私钥由提交者持有。 - 透明性
所有协作者和审核者都可以验证提交来源,提高项目透明度。
Git 会使用在全局配置中的用户名和邮箱,如果其他人使用与你相同的用户名与邮箱,实际其他人无法真正分辨两者的提交是谁。面gpg密码中带有用户信息,且只有你拥有对应的密钥时才能解密信息,就能证明该提交的作者是你
git config --global user.name "Your Name"
git config --global user.email "youremail@yourdomain.com"
总结:
GPG 签名在 Git 中提供了身份验证、数据完整性和不可否认性,是保障代码来源可信的有力工具。
安装
可以选择自安装gpg程序,也可以使用Git自带的gpg程序。如何选择就看你是否想要自己管理gpg密钥。
如何选择看:
- gpg4win:使用gpg4win可以用Gui界面方式操作,但需要自己安装和多一些配置步骤。
- git:开发者自带且不用多一步配置,缺点是无界面
密钥换电脑时会有需要备份或修改密钥中用户信息,已经gpg密钥支持增加子密钥多台电脑中使用,深入使用带有Gui程序会减少心智负担。不想深入使用什么配置都不配就好。
安装方式一:Git Bash
直接安装Git, 使用时需要使用Git Bash。
安装方式二:Gpg4win
安装时请选择Kleopatra, 我们将用kleopatra工具来管理Gpg密钥. 只安装gpg4win接下来的操作要用命令行了.
使用
创建GPG密钥
kleopatra方式
1
新建 OpenGPG 密钥对

填写内容
- ①:输入名字与邮件地址
- ②:使用密码句保护生成的密钥(每次使用密钥时需要输入密码,即使别人获取到密钥也得输入正确密码才能使用)
- ③:Key Material 选择加密算法,(可选可不选,我使用rsa4096的算法)
- ④:valid until取消勾选(因为自用为了方便我选择不加有效期)
3
输入保护密码(两次)

4
如密钥太过简单时会出现提示,可直接选择take this one anyway跳过(不要使用123456这样简单的密码)

5
创建成功

Git Bash方式
打开Git Bash终端输入:
gpg --full-generate-key
按提示步骤,选择用rsa加密算法长度4096位的密钥对(密钥自用方便可选择无有效期)
Git设置
步骤一:gpg程序位置(非使用Git Bash自带gpg程序时必须)
因git bash自带gpg加密程序,git提交时默认使用自己的gpg加密,我们需要修改成kleopatra附带的程序。
# 当使用gpg4win时需此配置,使用git内置的gpg生成时不需要
git config --global gpg.program <YOUR_GPG_PROGRAM>
# 例:git config --global gpg.program "C:\\Program Files (x86)\\GnuPG\\bin\\gpg.exe"
gpg程序路径在默认安装时,可以在文件管理中看kleopatra的同级目录
步骤二:自动使用gpg加签
git config --global commit.gpgsign true
git config --global tag.gpgsign true
PS这一步可选,但提交前commit命令添加参数(-s)
git commit -s -m "_commit_message_"
步骤三:添加你的Gpg Key ID
git config --global user.signingkey <YOUR_GPG_KEY_ID>
不知如何获取Key ID时看
kleopatra 获取GPG_KEY_ID
命令行 获取GPG_KEY_ID
输入命令打印
gpg --list-secret-keys --keyid-format=long
GitCode GPG公钥设置
复制出来的公钥末尾可能带有回车,需要删掉不然校验提示保存不了,密钥本身无错
Github GPG公钥设置
效果
Git提交记录会显示加签标记
Github提交记录显示
其他
Git提交记录验证其他提交者
- 需要项目成员提供他的gpg公钥并导入(导入方式见:导入他人gpg公钥到kleopatra)
拥有他人公钥后验证将变为绿标。
查看绿标显示签名用户和邮箱
导入他人gpg公钥到kleopatra
- 需要他人提供gpg公钥并导入
- 认证
- 选择自己的认证方式