Git提交验证
由于Git是基于邮箱验证身份,其他人可以很随意的伪造身份进行Commit

由于Git是基于邮箱验证身份,其他人可以很随意的伪造身份进行Commit。使用GPG key进行认证可以确保Commit的邮箱就是Github、Gitlab绑定邮箱,提交的Commit就有签名验证的绿色标识(Verified)。

安装gnupg

// 安装gnupg
➜  ~ brew install gnupg

// 查看已有pgp key
➜  ~ gpg --list-keys --keyid-format=long

// 生成pgp key
➜  ~ gpg --full-generate-key
gpg (GnuPG) 2.3.7; Copyright (C) 2021 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

请选择您要使用的密钥类型:
   (1) RSA 和 RSA
   (2) DSA 和 Elgamal
   (3) DSA(仅用于签名)
   (4) RSA(仅用于签名)
   (9) ECC(签名和加密) *默认*
  (10) ECC(仅用于签名)
 (14)卡中现有密钥
您的选择是? 1
RSA 密钥的长度应在 1024 位与 4096 位之间。
您想要使用的密钥长度?(3072) 4096
请求的密钥长度是 4096请设定这个密钥的有效期限。
         0 = 密钥永不过期
      <n>  = 密钥在 n 天后过期
      <n>w = 密钥在 n 周后过期
      <n>m = 密钥在 n 月后过期
      <n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 0
密钥永远不会过期
这些内容正确吗? (y/N) y

GnuPG 需要构建用户标识以辨认您的密钥。

真实姓名: 测试
电子邮件地址: test@gmail.com
注释: 测试
您正在使用‘utf-8’字符集。
您选定了此用户标识:
    “测试 (测试) <test@gmail.com>”

更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?

配置 Git 通过 GPG 签名

➜  ~ git config --global user.signingkey <keyid>

编辑~/.zshrc添加export GPG_TTY=$(tty)

设置好之后提交代码

git commit -S -m "提交注释"

如果不想每次提交都 -S

➜  ~ git config --global commit.gpgsign true

导出pub key

gpg --armor --export FAXXXXXXXX2F

迁移GPG

gpg --export-secret-keys -a <keyid> >private_key.asc
gpg --export -a <keyid> >public_key.asc

另一台电脑上导入

gpg --import private_key.asc
gpg --import public_key.asc

最后修改于 2022-08-21

此篇文章的评论功能已经停用。