最近我成功用上gpg签名了,顺手写个教程
啊等等,上次git教程写的啥来着
才写到入门??而且是我整个公众号创立以来的第四篇文章?后面就再也没写过git??
没有关系啊,好像把git的基础操作都简单讲了一遍,无伤大雅啊,下期再慢慢细说git的其他操作
好了进入正题
git教程之签个名
gpg是啥
首先先讲一下数字证书技术。
大概就是为了验证信息是谁发出的,以防止第三方假冒或事后否认(如发送方发送信息后恶意说信息不是他发的,或接收方恶意捏造信息说是发送方发送的)
首先是数字签名。在发送方发送信息前,发送方需要准备两个密匙,也就是公开密匙和私有密匙。在发送信息后,使用私有密匙对其加密,得到的密文就是数字签名。发送方需要把数字签名、信息和公开密匙共同发给接收方,接收方收到数字签名后,可以使用公开密匙进行解密,与原数据比对。若两者相同,说明数据未受篡改。而接收方也无法捏造信息,因为公开密匙无法生成数字签名,只有私有密匙可以。
而这无法防止假冒或事后否认,因为公开密匙不会说自己是谁发送的。因此,需要一个第三方的认证机构(Certification Authority,简称CA),对信息进行验证,而由CA认证并生成的数字签名,就叫做数字证书。
大体就是这么个流程,反正知道这么个东西就行了,考试不考
而gpg,就是我们用的CA
下载gpg
一般git都会带gpg客户端,还是老规矩,用--version检验是否安装gpg
gpg --version
如果这样就是已经安装了
如果没有安装gpg客户端,看我以前的教程装git啊,那按照下面的教程安装
linux debian系(debian、ubuntu、deepin等)
sudo apt-get install gnupg
linux Fedora系(Fedora、Red Hat、CentOS等)
sudo yum install gnupg
windows
你说说你当程序员用什么Windows?g++也装不了得用MinGW,git也装不了还得用人家做的git for windows。gpg只能去找git for windows内置的了。自己去看我之前做的git安装教程
啊?那个傻子用360下软件啊???
哦是我啊,那没事了
顺带一提,cmder是自带git for windows的,装了cmder的不用再装git for windows了
MacOS
brew install macos
生成私有密匙和公开密匙
gpg --gen-key
然后问你的全部默认即可
接下来,我们要在git中使用gpg,那么输入的Real name和email应该和remote上的一致。如使用gitee,Real name就应为gitee的用户名,email应为主邮箱。这样信息接收方gitee才可以认出你。Comment是注释,随便写写即可
完成后回车
这里需要核实一下信息,Real name和Email是否填写正确,若填写错误,输入N可改变Real name,输入E可改变Email,输入C可改变Comment。若核实无误,输入O(注意是大写字母O,不是数字0)。程序会让你设置密码,设置完密码后即可
把公开密匙发送给接收方
随后,我们可以使用下面的指令来查看我们之前生成的密匙
gpg -K
sec后面那串打码打掉的十六进制数字,每个人都不同,看自己的即可。随后我们使用这串数字来导出公开密匙
gpg --armor --export 那串数字
它输出的,就是我们的公开密匙。我们要把这个公开密匙发给信息接收方,也就是remote。我们还是以gitee为例
注意:粘贴密匙时,一定要注意自己粘贴的是公开密匙而非私有密匙,公开密匙会以-----BEGIN PGP PUBLIC KEY BLOCK-----开头,以-----END PGP PUBLIC KEY BLOCK-----结尾。在黏贴是,开头和结尾的这两串字符也要黏贴。
在git中使用gpg签名
git config --global user.signingkey 十六进制数字
这里是十六进制数字就是之前导出公开密匙用的那串
随后,在提交时,加上-S参数,即可给提交签名啦
git commit -m "xxx" -S
注意:它会让你输入密码,密码就是之前生成密匙时设置的那个密码
输入完密码后,就可以给提交签名了
签过名的提交,在gitee里,会在旁边显示一个绿色的“已验证”,就像文章开头的那张图一样
OK本期文章到此结束,下期的话