通过GPG密钥来签名你的Git commit吧

GPG 针不戳。

# 安装GPG

Windows 推荐安装 Gpg4win 来进行密钥的签发、管理。

官方下载地址

SHA256: f83be101c5e9c23740d6fde55fd8fefebf4fafb7badcb3756d1f574b5ad37507

下载速度可能会有点感人。

# 安装过程

安装时默认勾选了 Kleopatra,这是可视化管理前端。至于 GPABrowser integration ,我也选上了,指不定后面要用到?

之后选择安装位置,C盘空间够的话默认就行。

# 创建密钥

安装完成后默认打开 Kleopatra ,点击 新建密钥对 即可。如果你原来就有密钥,直接导入即可。

输入细节
输入细节
记得这里的邮箱要和你 GitHub/GitLab/Coding 的账号所使用的邮箱是一致的,否则GitHub不会信任创建的密钥对。

推荐点击高级设置,取消勾选 有效期结束于 ,这样就能生成一对不会过期的密钥了。 密钥类型推荐RSA,4096位。

waiting
waiting
稍事等待即可。

Success
Success
创建成功,可以开始使用了。

双击列表里刚刚创建的证书。

Detials
Detials
记得生成吊销证书,以便在以后需要吊销该证书时能快速传达。 点击导出,弹出你刚刚创建的公钥内容,复制即可。

# 使用密钥

GitHub/GitLab/Coding 的配置都是相仿的。

GitHub在 https://github.com/settings/keys 处点击 New GPG Key,粘贴公钥内容即可。

其他两个稍微找找也能找到,我就不再赘述了。

# 配置Git签名

首先获取密钥的编号。

命令行的方法是

1
gpg --list-secret-keys --keyid-format LONG

输出

1
2
3
4
5
6
C:\...\pubring.kbx
----------------------------------------------
sec   ed25519/9BB2556C2DA6CF80 2022-04-16 [SC] [expires: 2024-04-16]
      60F7533A708D2BCBD7B43AA69BB2556C2DA6CF80
uid                 [ultimate] Your_name <your@email>
ssb   cv25519/28A32E0729472A53 2022-04-16 [E] [expires: 2024-04-16]

然后指定该密钥:{key} 替换成密钥编号/ID即可。点击更多细节或者认证,都可以看到。我这里就是9BB2556C2DA6CF80

1
git config --global user.signingkey {key}
  • 只给当前仓库签名

    1
    
    git config commit.gpgsign true
    
  • 给所有仓库签名

    1
    
    git config --global commit.gpgsign true
    

# 问题修复

参考 该问题 的回答的回答,提醒了我可能是gpg软件路径问题,一看果然是,默认路径是不存在任何东西的。

由于Windows上咱安装的是 Gpg4win ,所以与 Git 以为的路径会有所差别,导致 Git 在验证签名时出错。所以需要指定gpg的地址,如下:

1
git config --global gpg.program '{安装目录}\GnuPG\bin\gpg.exe'

如果是默认安装C盘的话,应当是 C:\Program Files (x86)\GnuPG\bin\gpg.exe

# 完成

之后就可以推送到GitHub 之类的代码托管平台查看效果了。会出现绿色的 Verified 标。完成啦!

使用 Hugo 构建
主题 StackJimmy 设计