Skip to content

Git提交使用GPG签名

GPG(GNU Privacy Guard)是一种遵循OpenPGP标准的开源加密软件。我们可以用于加密内容,可以使用到文件、邮件等地方进行加密,加密后的内容,除非拥有私钥不然谁也无法解密得知邮件中的内容。

在使用 git commit 时,我们可以使用GPG签名提交,以确保提交的作者身份和提交的内容不会被窜改。

等等…Git提交是如何伪造提交的。其实在使用Git前我们都配置了用户名与邮箱,这个邮箱我们可以选择一位倒霉朋友装成自己。

配置Git用户名与邮箱
git config --global user.name "Your Name"
git config --global user.email "youremail@yourdomain.com"

可以选择自安装gpg程序,也可以使用Git自带的gpg程序。如何选择就看你是否想要自己管理gpg密钥。

如何选择看:

  • gpg4win:使用gpg4win可以用Gui界面方式操作,但需要自己安装和多一些配置步骤。
  • git:开发者自带且不用多一步配置,缺点是无界面

密钥换电脑时会有需要备份或修改密钥中用户信息,已经gpg密钥支持增加子密钥多台电脑中使用,深入使用带有Gui程序会减少心智负担。不想深入使用什么配置都不配就好。

下载地址: Gpg4win - Get Gpg4win

安装时请选择Kleopatra, 我们将用kleopatra工具来管理Gpg密钥. 只安装gpg4win接下来的操作要用命令行了.

  1. 新建 OpenGPG 密钥对

  2. 填写内容

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

  3. 输入保护密码(两次)

  4. 如密钥太过简单时会出现提示

    可直接选择take this one anyway跳过(不要使用123456这样简单的密码)

  5. 创建成功

  1. gpg程序位置(非使用Git Bash自带gpg程序时必须)

    因git bash自带gpg加密程序,git提交时默认使用自己的gpg加密,我们需要修改成kleopatra附带的程序。

    Terminal window
    # 当使用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的同级目录

  2. 自动使用gpg加签

    Terminal window
    git config --global commit.gpgsign true
    git config --global tag.gpgsign true

    PS这一步可选,但提交前commit命令添加参数(-s)

    Terminal window
    git commit -s -m "_commit_message_"
  3. 添加你的Gpg Key ID

    Terminal window
    git config --global user.signingkey <YOUR_GPG_KEY_ID>

查看绿标显示签名用户和邮箱

  1. 需要他人提供gpg公钥并导入

  1. 认证

  1. 选择自己的认证方式

  1. 需要项目成员提供他的gpg公钥并导入(导入方式见:导入他人gpg公钥到kleopatra)

拥有他人公钥后验证将变为绿标。