在Git中使用GPG签名

2022-09-12

GPG是一种加密算法,现在github支持commit使用GPG加密,从而保证提交的Commit在传输的过程中没有被篡改。

1. 生成GPG密钥

如果你还没有GPG密钥,建议参考以下步骤生成GPG密钥:

  1. 这里下载GPG工具。
  2. 安装完成后,打开命令行,输入gpg --full-generate-key,按照提示输入密钥信息。(注意:确保邮箱的那项是你github账号认证的邮箱,否则后面会出现问题)
  3. 为了后续使用方便,建议导出私钥gpg --export-secret-keys -a "{你的邮箱}" > private.key,并将私钥文件保存到安全的地方。
  4. 运行gpg --list-secret-keys --keyid-format LONG,查看生成的密钥信息,记住密钥的ID,后面会用到。

2. 将GPG密钥添加到Github

  1. 运行gpg --armor --export {key_id},复制输出的内容。
  2. 将输出的公钥信息粘贴到Github的SSH and GPG keys
  3. 再次提醒,GPG密钥中个人信息的邮箱部分,必须使用在Github中验证过的邮箱,否则添加GPG key会提示未经验证。

3. 在Git中使用GPG密钥

  1. 在Git中配置GPG密钥,运行git config --global user.signingkey {key_id}
  2. 然后,在每次commit的时候,加上-S参数,表示这次提交需要用GPG密钥进行签名:git commit -S -m "..."
  3. 如果觉得每次都需要手动加上-S有些麻烦,可以设置Git为每次commit自动要求签名:git config --global commit.gpgsign true

ADD BY @KanoDeer
windows terminal中使用的 gpg 路径在你的 GunPG 安装路径里,但是 git 使用的 gpg 是它自带的那个。这导致在 terminal 中导入密钥,但在 git 提交时却提示找不到密钥,需要在 GitBash 里导入,才能在 terminal 中使用。

D:\Programs\tools\Git\usr\bin\gpg.exe # git bash 调用这个  
D:\Programs\tools\GnuPG\bin\gpg.exe   # windows 调用这个

如果没注意这点,在 terminal 里 git 只会报错找不到密钥

如何向GitBash里添加GPG密钥? 打开git bash,输入gpg --import private.key,然后输入密码,即可导入密钥。

4. 结语

至此,你就可以在Git中使用GPG密钥进行签名了,大家也可以通过签名来验证提交者身份及提交的Commit是否被篡改过。当然,GPG的功能远不止这么多,更多操作有待发展。
有关Git与GPG的更多信息,可以参考这里这里

此文就到此结束啦!欢迎大家在评论区留言哦ヾ(^▽^*)))
Ciallo~(∠・ω< )⌒☆​
写文不易,如果你觉得我的文章对你有帮助,欢迎打赏