PGP(英语:Pretty Good Privacy,直译:优良保密协议)是一套用于讯息加密、验证的应用程序.
PGP Inc.与齐默尔曼同意IETF制定一项公开的互联网标准,称作OpenPGP,任何支持这一标准的程序也被允许称作OpenPGP。
摘自维基百科
因为我手里没有Linux设备而且不想开虚拟机,所以采用了GPG4win,而GPG4win是默认带有Kleopatra作为Win下的GUI,所以直接默认配置安装即可。
创建密钥对
安装完成后打开Kleopatra,点击文件-新建密钥对
,选择创建个人OpenPGP密钥对
,填入你的名字(昵称)与电子邮件,这里因为我想要使用在Github的OpenPGP签名验证上,所以是必填项(必须与你的Github邮箱地址相同)
在创建时,可以点击高级设置
来选择密钥类型与证书用途,如果你以默认的选项直接创建,则是创建出一个用途为认证与签名,一个用途为加密的EdDSA/ECDH密钥。就算你全部选择,创建的密钥也是一个认证,签名与验证,一个为加密。如果你想导入类似Yubikey/Canokey这一类的物理密钥,则可能会遇到只能导入签名与仅加密的问题(此问题在Canokey上遇到,Yubikey不确定)
解决办法则是新创建一个负责验证的子密钥即可,这里则需要使用一下Windows Powershell了
打开Windows Powershell(管理员),使用gpg --list-keys
列出所有的已有的PGP密钥
创建以RSA2048加密的子密钥(加密)
gpg --quick-add-key [fpr] rsa2048 encr
创建以RSA2048加密的子密钥(签名)
gpg --quick-add-key [fpr] rsa2048 sign
创建以RSA2048加密的子密钥(验证)
gpg --quick-add-key [fpr] rsa2048 auth
[fpr]
这里使用命令行创建的密钥,Kleopatra也会同步显示
查看位置在证书-选择一个证书并单击鼠标右键-细节-More Details
如果你想将其导入至Canokey,则需要插入Canokey,并点击智能卡按F5来获取信息,再点击证书-选择一个证书并单击鼠标右键-细节-More Details-选择一个子密钥并鼠标右键-转移到智能卡
你也可以直接为Canokey生成一对子密钥,只需要在智能卡页面,点击创建OpenGPG密钥即可。
在你拥有了GPG密钥后,你可以选择将你的公钥发布至公共目录服务器上,别人可以通过你的邮箱/密钥ID来找到你的公钥,并以此给你发送信息。
在Git中使用PGP密钥进行commits签名
- 打开Git Bash
- 输入
gpg --list-secret-keys --keyid-format=long
查看你已有的密钥
gpg --list-secret-keys --keyid-format=long
导出公钥
Kleopatra-证书-选择一个证书并鼠标右键-导出..
导出私钥
Kleopatra-证书-选择一个证书并鼠标右键-备份私钥
导入公钥
gpg --import 公钥位置
导入私钥
gpg --allow-secret-key-import --import 私钥位置
设置 PGP 签名密钥
git config --global user.signingkey KeyID
KeyID位于加密类型之后,类似于下面的样式,此处的KeyID就为C31BEECA80346A4B
$ gpg --list-secret-keys --keyid-format=long
/c/Users/xxxx/.gnupg/pubring.kbx
---------------------------------
sec ed25519/C31BEECA80346A4B 2022-06-13 [SC] [expires: 2024-06-13]
17D5B862331E0813D7B57B31C31BEECA80346A4B
uid [ultimate] Rain Sakura <[email protected]>
ssb cv25519/3C4AE7A18C3C85B1 2022-06-13 [E] [expires: 2024-06-13]
那么同理,设置的命令就为
git config --global user.signingkey C31BEECA80346A4B
设置完成后,如果你想要在每次提交的Commits进行签名,则需要使用下面的命令
git config --global commit.gpgsign true
仅单次Commit签名的话,只需要在commit命令中增加-S
参数
git commit -S -m "your commit message"
将PGP密钥增加至Github账号中
- 首先,登录账户并点击右上角头像,点击settings
- 点击SSH and GPG keys
- 点击New GPG key
- 输入Title(名称,仅作区分)与Public Key(公钥证书内容)
- 点击Add GPG key
验证Commits签名
随便选择一个你的项目,在设置完上述内容后提交一个Commit,并前往Github项目页查看Commit,包含Verified字样即代表签名并验证成功,类似下图
暂无评论内容