一、生成GPG
默认CentOS7安装有gpg,使用命令生成自己的密钥:
1 | gpg --full-generate-key |
按照提示选择默认输入,建议使用4096的key长度。
值得注意的是,某些用户可能无法生成KEY,因为熵池的容量不足,导致生成key的时候卡住,则可以通过安装rng-tools自动补充熵池,需要安装
1 | yum install rng-tools |
生成后通过gpg --list-secret-keys --keyid-format LONG
查看现有的key,图中花圈部分就是这个key的ID,记住这个ID,后面将会有用到。
二、托管公钥(可选)
当你提交一个commit的时候别人如何验证你的内容呢?每个人都手动传公钥过去不现实,这里就有很多托管公钥的地方,我们可以配置公钥托管服务器把自己的公钥上传。
使用命令:gpg --send-keys <公钥ID>
来发送公钥到托管服务器。
注意的是!!!由于公钥服务器没有检查机制,任何人都可以用你的名义上传公钥,所以没有办法保证服务器上的公钥的可靠性。通常,你可以在网站上公布一个公钥指纹,让其他人核对下载到的公钥是否为真。fingerprint参数生成公钥指纹。
gpg --fingerprint <公钥ID>
三、commit自动签名
配置git的配置,使每次commit的时候自动签名:
1 | git config --global user.signingkey <公钥ID> |
以后再 Git Commit,同步到 Github 上之后,就会发现该 Commit 已显示 Verified。
四、签名的验证
怎么怎样commit上去的内容是本人签署的呢?
先从托管服务器拉取公钥:gpg --recv-keys <公钥ID>
核对公钥的指纹,gpg --fingerprint <公钥ID>
然后输入git log --show-signature -1
即可确认签名是否正确。