Windows下OpenPGP的签发与使用

Windows下OpenPGP的签发与使用

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

这里使用命令行创建的密钥,Kleopatra也会同步显示

查看位置在证书-选择一个证书并单击鼠标右键-细节-More Details

如果你想将其导入至Canokey,则需要插入Canokey,并点击智能卡按F5来获取信息,再点击证书-选择一个证书并单击鼠标右键-细节-More Details-选择一个子密钥并鼠标右键-转移到智能卡

你也可以直接为Canokey生成一对子密钥,只需要在智能卡页面,点击创建OpenGPG密钥即可。

在你拥有了GPG密钥后,你可以选择将你的公钥发布至公共目录服务器上,别人可以通过你的邮箱/密钥ID来找到你的公钥,并以此给你发送信息。

在Git中使用PGP密钥进行commits签名

  1. 打开Git Bash
  2. 输入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 <xxxx@live.com>
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账号中

  1. 首先,登录账户并点击右上角头像,点击settings
  2. 点击SSH and GPG keys
  3. 点击New GPG key
  4. 输入Title(名称,仅作区分)与Public Key(公钥证书内容)
  5. 点击Add GPG key

验证Commits签名

随便选择一个你的项目,在设置完上述内容后提交一个Commit,并前往Github项目页查看Commit,包含Verified字样即代表签名并验证成功,类似下图

图片[1]-Windows下OpenPGP的签发与使用-Rain's Blog

参考内容

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发
头像
说点什么?
提交
头像

昵称

取消
昵称表情代码图片