使用GPG密钥验证Github的提交

GNU Privacy Guard(GnuPG或GPG)是一个密码学软件,用于加密、签名通信内容及管理非对称密码学的密钥。GnuPG是自由软件,遵循IETF订定的OpenPGP技术标准设计,并与PGP保持兼容。

GPG简介

(摘自维基百科)

GNU Privacy Guard(GnuPG或GPG)是一个密码学软件,用于加密、签名通信内容及管理非对称密码学的密钥。GnuPG是自由软件,遵循IETF订定的OpenPGP技术标准设计,并与PGP保持兼容。

简单的说,就是用于加密的密钥。
众所周知,Git的提交只需要自己的邮箱和密码,这就出现了一个漏洞:
只要他人有你的用户名和邮箱,就可以进行提交,就可以更改你的仓库内容。
一个典型的案例:https://spencerwoo.com/blog/wait-this-is-not-my-commit

具体操作

  1. 电脑上安装好Git 没有安装的可以在此处下载:https://repo.huaweicloud.com/git-for-windows/

  2. 打开Git Bash,输入

    1
    
    $ gpg --full-generate-key
    

    在第一处,选择RSA
    在第二处,选择4096bits 在第三处,选择过期时间,回车为永不过期
    在用户ID处,填写自己的Github用户名
    在签名邮箱处,填写Github上绑定的邮箱
    最后,为密钥设置一个密码,也可以不设置,如果设置了则一定要记住这个密码
    这样,就成功生成了一对GPG密钥

  3. 运行

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

    来查看我们当前拥有的所有GPG密钥:

其中,sec一行的FB8FA623E7013D41即为GPG私钥ID 4. 运行

1
2
3

$ git config --global user.signingkey FB8FA623E7013D41(此处替换为你自己的私钥ID)
$ git config --global commit.gpgsign true

此后的每一次提交,Git都会用其进行签名 5. 运行

1
2

$ gpg --armor --export FB8FA623E7013D41

来导出自己的GPG公钥,类似这样:

1
2
3
4

-----BEGIN PGP PUBLIC KEY BLOCK-----
dasSJDsiiiaF......
-----END PGP PUBLIC KEY BLOCK-----

将这一段粘贴到https://github.com/settings/keys 的GPG keys处,随后进行一次提交,即可看见自己的commit上有了Verified的绿色标签

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy