普通的 HTTPS 和 RSA 密钥方式提交代码,并不能判断是谁提交的代码,多人可以使用同一套验证进行提交,而 GPG 密钥就可以避免此问题,可以对提交者进行验证。

创建密钥

安装工具

macOS 上创建密钥需要安装 GPG 命令行工具或者 GUI 工具,下载地址:点击跳转。安装完成后即可使用终端生成 GPG 密钥

生成密钥对

创建一个 GPG 密钥对,因为 GPG 有多个版本,因此可能需要查阅官方的支持手册来获得适用的命令,GitHub 适用的密钥必须适用 RSA 密钥且具有 4096 位长度。

  • 如果使用的是 2.1.17 及以后版本,可以使用下述命令进行生成。
1
$ gpg --full-generate-key
  • 如果使用的不是 2.1.17 及以后的版本,可使用以下命令。
1
$ gpg --default-new-key-algo rsa4096 --gen-key
  1. 然后根据屏幕提示确认使用的加密方式,默认为 RSA 。接下来确认密钥对强度,选择为 4096。
  2. 输入用户的信息并进行确认。
  3. 输入个安全的密码。

查看密钥对

1
$ gpg --list-secret-keys --keyid-format LONG

从列表中即可看到本机存在的全部 GPG 密钥对,假定以 ID 为 3AA5C34371567BD2 的密钥对为例。

1
2
3
4
5
6
$ gpg --list-secret-keys --keyid-format LONG
/Users/hubot/.gnupg/secring.gpg
------------------------------------
sec 4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid Hubot
ssb 4096R/42B317FD4BA89E7A 2016-03-10

导出密钥对信息

1
$ gpg --armor --export 3AA5C34371567BD2

小贴士:密钥对信息会以 -----BEGIN PGP PUBLIC KEY BLOCK----- 字符串开头,以 -----END PGP PUBLIC KEY BLOCK----- 字符串结束。

添加密钥

将复制出来的密钥串粘贴至 GitHub 的密钥页面中,点击跳转

提交代码

查看本地密钥对

1
$ gpg --list-secret-keys --keyid-format LONG

为本地仓库配置 GPG 密钥

1
$ git config --global user.signingkey 3AA5C34371567BD2

小贴士:本文以 3AA5C34371567BD2 为例,请输入真实的密钥对 ID。

为当前的项目配置密钥认证

1
$ git config commit.gpgsign true

为全部项目配置密钥认证

1
$ git config --global commit.gpgsign true

小贴士:配置后使用提交命令即可在 GitHub 网页中看到 出现 Verified 绿色标记。

参考链接