使用 GPG 签名 Git 提交,让它安全可信
Gitee(码云)也支持使用 GPG 签名提交。
GitLab 是如何处理 GPG 呢?
GitLab使用自己的密钥环来验证 GPG 签名。它不访问任何公钥服务器。
对于要由 GitLab 验证的提交:
-
提交者必须具有 GPG 公钥/私钥对。
-
提交者的公钥必须已上传到其 GitLab 帐户。
-
GPG 密钥中的一封电子邮件必须与提交者在 GitLab 中使用的经过验证的电子邮件地址匹配。
-
提交者的电子邮件地址必须与 GPG 密钥中验证的电子邮件地址匹配。
生成 GPG 密钥并上传 GPG key 到 GitLab
1、安装 GPG,MacOS 环境下可以使用 brew 安装 gpg:
brew install gpg
2、用以下命令生成 GPG key。
gpg --gem-key
3、使用以下命令列出您刚刚创建的私密 GPG 密钥:
gpg --list-secret-keys --keyid-format LONG <your_email>
# 这里是 admin@example.com
4、复制以 sec 开头的 GPG 密钥 ID。以下示例中,它是 66DD4800155F7A2B
sec rsa2048/66DD4800155F7A2B 2019-10-31 [SC] [有效至:2021-10-30]
39033F321A83635ECD7FC8DA66DD4800155F7A2B
uid [ 绝对 ] admin <admin@example.com>
ssb rsa2048/53DD9CB77C862573 2019-10-31 [E] [有效至:2021-10-30]
5、导出该 ID 的公钥:
gpg --armor --export pub 66DD4800155F7A2B
6、复制公钥并将其添加到 GitLab 个人资料的设置中。
将 GPG 密钥与 Git 关联
git config --global user.signingkey 66DD4800155F7A2B
# 或者
git config user.signingkey 66DD4800155F7A2B
签名提交
1、Git 提交时,使用 -S 标记进行 GPG 签名:
git commit -S -m “commit message"
2、此外,Git 可以设置默认使用 GPG 签名提交:
git config --global commit.gpgsign true
# 或者
git config commit.gpgsign true
在 GitLab 验证提交
1、在 GitLab 提交选项卡,签名的提交将显示包含“ Verified”或“ Unverified”的徽章,具体取决于 GPG 签名的验证状态。
撤销(revoke)或删除 GPG key
此外,还可以撤销(revoke)或删除 GPG key。
它们不同之处在于:
在 Git 中通过命令行验证相关提交的签名
$ git log --show-signature -1
commit 374010d1af1de40fdf8f1f6f5cca0c0c60e4fe9d (HEAD -> master, origin/master, origin/HEAD)
gpg: 签名建立于 四 10/31 11:24:16 2019 CST
gpg: 使用 RSA 密钥 39033F321A83635ECD7FC8DA66DD4800155F7A2B
gpg: 完好的签名,来自于 “admin <admin@example.com>” [绝对]
Author: admin <admin@example.com>
Date: Thu Oct 31 11:24:16 2019 +0800
update README.md
