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
此篇文章的评论功能已经停用。