GPG 是 GNU Privacy Guard 的简称,又名 GnuPG 是一种加密软件,它是 PGP 即 Pretty Good Privacy 的替代物,因为 PGP 不开源不免费,所以 GPG 使用还是比较广泛。通常用于软件包签名。
macOS中安装GPG
macOS可通过homebrew来安装
brew install gpg
GPG使用
生成GPG公钥和私钥
gpg --full-generate-key
根据提示选择密钥种类、长度、用户、邮箱、备注等信息。
显示和导出公钥和私钥
gpg --list-keys
gpg --list-public-keys
gpg --list-secret-keys
通过第一条命令查询后得到的结果,其中虚线上面一条是公钥文件及其保存地址,该文件是一个二进制形式存储的文件,虚线下面的内容是
pub 后是公钥的特征,包含 2048 位,指纹字符串以及生成的时间,该字符串最后十六位即长密钥 ID。其中括号中 S 表示 > Signing 即签名,E 表示 Encrypting 即加密,C 表示 Certificating 即认证。
uid 后是用户的个人信息
sub 后是子密钥特征,格式和公钥部分大致相同,包含 2048 位和生成时间。
上面看到的都是精简的内容,如果要看到完整的内容,通过如下命令gpg --armor --export <邮箱或者指纹字符串或者长密钥 ID> //查看完整的公钥 gpg --armor --export-secret-keys <邮箱或者指纹字符串或者长密钥 ID> //查看完整的私钥
有时需要备份或者将公钥进行分享,需要导出成文件。
gpg --armor --output publickeyfile.txt --export <邮箱或者指纹字符串或者长密钥 ID> //导出公钥
gpg --armor --output privatekeyfile.txt --export-secret-keys <邮箱或者指纹字符串或者长密钥 ID> //导出私钥
证书重新导入信任证书
将证书导入别的机器,或者重装系统后恢复证书,新导入的证书显示为[ unknown ]
,正常情况下应该是[ ultimate ]
。
GNUPG有一个信任数据库存储在~/.gnupg/trustdb.gpg,可以通过--export-ownertrust选项导出这个数据库。
如果是在一个新的环境导入密钥,这个信任数据库并不存在,这也很好解决。
gpg --edit-key user@useremail.com
gpg> trust
Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)
1 = I don't know or won't say
2 = I do NOT trust
3 = I trust marginally
4 = I trust fully
5 = I trust ultimately
m = back to the main menu
Your decision? 5
最后别忘了保存更改:
gpg> save