浅谈GPG
写这个是因为前几天在配置好GitHub actions后勉强可以在网页上直接写东西了,上面一篇内容就是在网页写的,然而在发布之后查看commit记录的时候我发现通过网页提交的commit旁边会有一个Verified
字样,点开以后会显示This commit was created on GitHub.com and signed with a verified signature using GitHub’s key.
感觉看上去挺有意思,于是尝试一下配置自己的GPG密钥,给commit记录签名。感觉网上的东西说的不是很让人明白,索性在这里再记录一下自己的体会。
下面的内容在macOS Catalina上进行。
GPG简介
1991年,程序员Phil Zimmermann为了避开政府监视,开发了加密软件PGP。这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。但是,它是商业软件,不能自由使用。所以,自由软件基金会决定,开发一个PGP的替代品,取名为GnuPG。这就是GPG的由来。 from 阮一峰的网络日志
GPG密钥生成及使用
软件安装
首先是安装,在macOS上面可以直接使用homebrew来进行,如果你还没有开始使用这个优秀的包管理工具,强烈推荐你了解一下,并开始使用。
brew install gnupg2 #有些教程提到一定要用gnupg2经过我的测试目前gnupg也已经指向gnupg2了是一样的
另外建议安装gpg-suite
这个管理工具,在配置git的时候会更加方便,不过这和本文无关。
密钥生成
输入gpg --full-generate-key
按照提示进行操作,注意如果你的语言设置为中文的话在输入保护密码的时候会出现乱码不过不影响操作,不理会即可。
密钥管理
在仔细查阅资料后我发现,在较早期的时候因为兼容性问题对于是否使用子密钥有一定争议,但是对于现在来说在日常使用时使用子密钥而不是主密钥进行加密签名等操作已经被认为是一种最佳实践,所以很有必要学习一下。
在默认情况下,只想上面操作时会生成一对主密钥(用于签名)和一对子密钥(用于加密),使用gpg --list-secret-keys --keyid-format LONG
即可查看。
如果想要生成其他子密钥使用gpg --edit-key [key-id]
即可进入编辑模式,下面简单罗列一些常用命令备查:
使用addkey
即可添加新的子密钥
gpg -o path/to/somewhere --export-secret-keys [key-id]
导出私钥备份 gpg -o path/to/somewhere --export-secret-subkeys 71C861745213C7
导出私子密钥备份
~/.gnupg/openpgp-revocs.d/
吊销证书默认存储位置
gpg --delete-secret-keys [key-id]
删除私钥
gpg --import path/to/key
导入私钥
将吊销证书导入即可吊销本地
最佳实践
https://nova.moe/openpgp-best-practices-key-configuration/
一些不错的资料
因为网络资料很齐全剩下的内容就不再详述了,参加下面几篇文章就好。
关于git commit签名
我的GPG Key
最后附上我的GPG Key