为什么需要 GPG 验证?
为了保证我们的账户以及数据的安全性,GitHub 提供了签名验证的功能,来确认每次的提交来自可信的来源。我们需要做的就是提供一个加密签名,供 github 进行验证。
未验证
在我们日常开发中,未进行签名验证, 提交的代码状态如下所示
已验证
当我们增加了签名验证后,给自己的 commit 进行加密传输。每次 commit 后的代码会弹出输入 purhase 的弹框。只有正确输入 purhase ,才会出现 verified
的字样
在多人协作的项目中,仓库管理员可以根据需要,设置是否阻止未签名和验证的所有提交。
如何创建 GPG 签名?
1. 检查现有 GPG 密钥
gpg --list-secret-keys --keyid-format LONG
该命令列出同时具有公钥和私钥的GPG密钥。签名提交或标记需要私钥
可以看到此时我的电脑上并没有创建过密钥的记录
2. 生成新的 GPG 密钥
windows 系统下,打开 bash 面板。
gpg --default-new-key-algo rsa4096 --gen-key
注意:密钥必须使用 RSA,且长度不得少于4096
按照提示输入自己的昵称、邮箱、以及commit时的确认密码
遇到需要确认的问题可以直接按 enter
3. 查看并复制
gpg --list-secret-keys --keyid-format LONG
可以发现此时有了一个带有 ID 和邮箱的密钥
将此 ID 复制出来
执行以下命令将 ID 对应的密钥复制出来
gpg --armor --export 03CAB20EBF939F41F3209CDC6671CBC591A
然后就可以将-----BEGIN PGP PUBLIC KEY BLOCK-----
这段输出的结果复制到粘贴板上
4. 填充至 github
打开自己的 Github 主页,找到 settings > SSH and GPG keys
新建一个 GPG KEY
将刚刚复制的密钥粘贴进来,点击保存即可
之后的提交都需要输入安全密码,虽然提交流程多了一步,但是提升了项目的安全性。
参考文档:
github-docs