GPG 秘钥对生成及简单应用|Application Method of GPG
GPG 秘钥对生成及简单应用
0.前语
使用 GPG 秘钥对有段时间了, 在使用的过程中发现了一些其不俗之处. 其主秘钥可以通过生成子秘钥来完成一些特定操作, 例如: 签名(Sign) 、 加密(Encrypt) 和 验证(Auth) 操作. 这里只演示主秘钥对的生成以及最简单的应用, 如有需要 我可能会专门再更一篇文章.
0.1 系统环境介绍.
- 系统: MacOS Big Sur(11.2.3)
- 终端: ZSH iTerm2
如有需要我会做 Linux & Windows 下的一些操作.
1. GPG 软件安装
有两种方式可以安装 一种是通过包管理器 另一种是通过二进制文件安装. 大家自选一种即可.
- 1.1 包管理器安装:
brew install gpg
- 1.2 二进制文件安装
- 打开 https://gpgtools.org 下载二进制文件安装即可.
- 1.3 安装完成后, 使用
gpg --version
验证一下是否安装成功即可.
2. 主秘钥对生成
2.1 生成主秘钥:
gpg --full-generate-key
2.2 选择加密算法:
这里演示默认算法 RSA. 如果大家希望了解一下这几个算法有什么区别 可以私信我出一篇文章来专门描述.
- (1) RSA and RSA (default)
- (2) DSA and Elgamal
- (3) DSA (sign only)
- (4) RSA (sign only)
- (14) Existing key from card
2.3 输入秘钥长度
秘钥长度越长越安全则相对的计算与验证过程时间越长, 如果秘钥长度越短则与之相反.
这里长度区间在 1024 ~ 4096 之间, 默认长度 3072. 这里演示 4096.
1
2
3Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072)2.4 输入过期时间
这里可以按照自己的需求设置过期时间, 建议时间不要太短. 或者也可以设置为不过期.
如果要设置 10 天后过期,则输入 10 即可, 如果要设置 4 年后过期, 输入 4y 即可. 在数值后加上相关单位即可, 天数可以不用加. 设置为 0 则为不过期. 这里设置为 1 个月, 大家不要照抄.
1
2
3
4
5
6
7
8
9What keysize do you want? (3072) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)2.5 确认过期时间
这里会输出过期时间确认是否正确, 如果输入错误直接回车或者输入 N 即可, 如果正确在输入 y.
1
2
3Key is valid for? (0) 1m
Key expires at Thu May 6 16:06:41 2021 CST
Is this correct? (y/N)2.6 输入名称
这里建议输入英文, 非英文字符可能会存在各种稀奇古怪的问题. 可以输入空格与.字符.
1
2
3Is this correct? (y/N) y
GnuPG needs to construct a user ID to identify your key.
Real name:2.7 输入邮箱地址
务必输入正确的邮箱地址.
1
2Real name: Test T. William
Email address:2.8 输入备注
这里可以输入也可以不输入. 不输入直接回车即可.
1
2Email address: test@ora.pub
Comment:2.9 最终确认
核验输入的信息是否有误, 有误则按照提示进行修改, 无误则输入 O 进行确认即可.
1
2
3
4
5Comment: This is a test GPG Key Chain.
You selected this USER-ID:
"Test T. William (This is a test GPG Key Chain.) <test@ora.pub>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?2.10 输入主秘钥对密码
这里的密码务必谨记, 否则丢失密码后则无法找回该主秘钥以及相关子秘钥.
2.10.1 再次确认
如果输入的密码是弱密码, 则会提示该密码为弱密码, 提醒修改密码, 当然也可以确定继续使用该弱密码.
2.11 完成流程图
2.12 查看生成的秘钥对并复制该秘钥对的指纹.
使用
gpg -K
可以查看生成的该秘钥对并复制该秘钥对的指纹. 就是 sec 下面的那行长度为 40 的十六进制字符串.1
2
3
4
5
6
7
8
9william ~ gpg -K
/Users/william/.gnupg/pubring.kbx
---------------------------------
sec rsa4096 2021-04-06 [SC] [expires: 2021-05-06]
CF9943BD62C52BA54ACF40B8DF4BF13703DED351
uid [ultimate] Test T. William (This is a test GPG Key Chain.) <test@ora.pub>
ssb rsa4096 2021-04-06 [E] [expires: 2021-05-06]
william ~
3. 增加相关子秘钥并添加功能
3.1 编辑主秘钥
这里输入
gpg --edit-key
加上刚刚复制的指纹.gpg --edit-key CF9943BD62C52BA54ACF40B8DF4BF13703DED351
3.2 增加子秘钥
输入
addkey
, 详细一些或者其他命令可以输入help
进行查看.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15william ~ gpg --edit-key CF9943BD62C52BA54ACF40B8DF4BF13703DED351
gpg (GnuPG/MacGPG2) 2.2.24; Copyright (C) 2020 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Secret key is available.
sec rsa4096/DF4BF13703DED351
created: 2021-04-06 expires: 2021-05-06 usage: SC
trust: ultimate validity: ultimate
ssb rsa4096/CD920472747844AF
created: 2021-04-06 expires: 2021-05-06 usage: E
[ultimate] (1). Test T. William (This is a test GPG Key Chain.) <test@ora.pub>
gpg>3.3 选择该子秘钥的功能及算法
sign 是签名, encrypt是加密, 按需输入即可. 老样子, 这里选择 RSA.
1
2
3
4
5
6
7
8gpg> addkey
Please select what kind of key you want:
(3) DSA (sign only)
(4) RSA (sign only)
(5) Elgamal (encrypt only)
(6) RSA (encrypt only)
(14) Existing key from card
Your selection?3.4 输入子秘钥的长度
与上文一样, 不再赘述.
1
2
3Your selection? 6
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072)3.5 输入子秘钥的过期时间
没错, 子秘钥也可以设置过期时间.
1
2
3
4
5
6
7
8
9What keysize do you want? (3072) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)3.6 确认子秘钥信息.
确认信息
1
2
3Key is valid for? (0) 1m
Key expires at Thu May 6 16:40:17 2021 CST
Is this correct? (y/N)3.7 再次确认
1
2Is this correct? (y/N) y
Really create? (y/N)3.8 输入主秘钥的密码进行操作.
3.9 保存并退出
输入
save
即可保存.3.10 查看该秘钥
gpg -K
发现在原来的主秘钥下新增了一个ssb
, 即子秘钥. 这里我是重新生成了一个签名功能的子秘钥, 故而与上文不一致.1
2
3
4
5
6
7
8
9
10william ~ gpg -K
/Users/william/.gnupg/pubring.kbx
---------------------------------
sec rsa4096 2021-04-06 [SC] [expires: 2021-05-06]
CF9943BD62C52BA54ACF40B8DF4BF13703DED351
uid [ultimate] Test T. William (This is a test GPG Key Chain.) <test@ora.pub>
ssb rsa4096 2021-04-06 [E] [expires: 2021-05-06]
ssb rsa4096 2021-04-06 [S] [expires: 2021-05-06]
william ~3.11 生成验证功能的子秘钥.
这里的验证功能可以使用在 SSH 服务上, 比如说使用 SSH 登录 vps 或者验证 SSH 协议的 Git.
不一步一步演示了, 直接展示操作流程.
在编辑主秘钥时需要加入
--expert
, 否则无法增加验证功能.在选择功能那里时需要注意, 需要根据自己的需求来选择. 我只想要这个子秘钥有验证功能, 但它默认选中了 签名 和 加密 功能, 故而我分别输入了 S 和 E 取消选中该功能, 并输入 A 选中验证功能.
- 3.11.1 查看秘钥对
gpg -K
发现多了个 A 功能的子秘钥.
1
2
3
4
5
6
7
8
9
10
11william ~ gpg -K
/Users/william/.gnupg/pubring.kbx
---------------------------------
sec rsa4096 2021-04-06 [SC] [expires: 2021-05-06]
CF9943BD62C52BA54ACF40B8DF4BF13703DED351
uid [ultimate] Test T. William (This is a test GPG Key Chain.) <test@ora.pub>
ssb rsa4096 2021-04-06 [E] [expires: 2021-05-06]
ssb rsa4096 2021-04-06 [S] [expires: 2021-05-06]
ssb rsa4096 2021-04-06 [A] [expires: 2021-05-06]
william ~- 3.11.1 查看秘钥对
4.给 Git 项目添加 GPG 签名.
4.1 导出该 GPG 主秘钥公钥
gpg --armor --export
加上主秘钥的指纹.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112william ~ gpg --armor --export CF9943BD62C52BA54ACF40B8DF4BF13703DED351
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
3s6PIdyYUjBRs04QwcwSt5NweJoLz399dzA=
=K177
-----END PGP PUBLIC KEY BLOCK-----
william ~4.2 添加该主秘钥到 GitHub
在
GitHub
->设置
->SSH and GPG Keys
->New GPG key
码云同理.
- 4.2.2 添加完成后可以在 GitHub 上查看到该秘钥的相关信息.
- 4.2.2 添加完成后可以在 GitHub 上查看到该秘钥的相关信息.
4.3 为 Git 项目增加 GPG 签名
添加签名有两种, 一种是为当前 git 项目添加 GPG 签名, 还有一种是为本地所有的 git 项目都添加 GPG 签名. 这里演示为当前项目添加 GPG 签名, 全局命令加上
--global
即可.4.3.0 git 全局配置命令
git config --global
- 例如配置全局提交昵称:
1
git config --global user.name "Test T. William"
- 例如配置全局提交昵称:
4.3.1 设置 git 提交昵称.
1
git config user.name "Test T. William"
4.3.2 设置 git 提交邮件
1
git config user.email "test@ora.pub"
4.3.3 设置 git 签名秘钥指纹
1
git config user.signingkey CF9943BD62C52BA54ACF40B8DF4BF13703DED351
4.3.4 开启 git 提交 GPG 签名
1
git config commit.gpgsign true
4.3.5 验证该签名
任意 commit 一个文件并 push, 在 GitHub 的提交记录中均可以看到验证记录.
在执行第3步时理论上是要输入主秘钥密码的.
1
2
3
4touch test
git add test
git commit
git push
5. 使用 GPG 的 SSH 验证功能
使用 ssh 的服务有很多种, 这里举例最常用的两种, 一种是 ssh 登录 vps, 一种是使用 ssh 提交代码到 GitHub.
5.1 导出 ssh 公钥
gpg --export-ssh-key
加上主秘钥的指纹即可1
2
3william ~ gpg --export-ssh-key CF9943BD62C52BA54ACF40B8DF4BF13703DED351
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCa789czkPwlftgCBAJubAsdWMipCVL68ID7DWJoSn+O0gJYwyvpUgkymzJuNCISJeM3CVOkyKU2IV3ANRzHqFkguwWIT2WZl7bJm3odKUnsNjYJGLaXPdL5O+u0+4tkLJsDWzC8RL4y0RBy1KT/JKC0tKZTgAFGMJtOGFur3v6fTWmTiEcvAskcmwXjHFbIdpgUKitH1uDYeK6C/09rSuJA3udarYAxRgZ3jHw6XOgbaOIL8G/HW9gineeuIt8PzIsfEZkD5wM9NWcsEqRAQ8tj13MbbKhAw09+/e8HVzSfdIiswkQWWzVeE9Zv/ES+dh1cgSSBncM/hufyxXrbgDOfYoV9tYtIt7gixGBV76Th0zbtkordiOMv6dul2W/KN2Y/qMuquNy3kUmP/JQJyDoZ00NZ4jkfYYoT/9a+xf1y4SVTZtWLPtMr8Eaw8AGGtwqx/LZyND0S9AqroqyaWHgbcIJcK1bF+daPK/APaaPeLyuIhUYDMy/RKmgtDJGJavmd++HEiLaCDxYlXjgCckoCZ9+wpx4GJD4MKppeI/VJEKn3XzVx+En81XlKP8spft+GkXe5naQg2kxBD5Ja2r02EznsD12cXUecMbsqNQjAgvclwjfifRt+J4rZ2hEbIKb1vq1NVfR9fUa/P1GTTi3qusSLycSSWKxV+/jeQZPMw== openpgp:0x259A1365
william ~5.2 添加 SSH 公钥到 vps 和 GitHub 中
5.2.1 添加至 vps
使用原始登录方式登录到 vps 中, 进入用户主目录下的 ssh 配置目录(
cd ~/.ssh
), 将上文中导出的 ssh 公钥添加至authorized_keys
中, 注意: 每行只能包含一个公钥!5.2.2 添加至 GitHub
登录GitHub.
GitHub
->设置
->SSH and GPG keys
->SSH keys
->New SSH key
5.3 开启 GPG 的 SSH 验证功能
注: 这里我使用的是
ZSH
, 使用bash
的话需要进行更改, 不能照搬.5.3.1 开启 GPG 的 SSH 验证功能
将
enable-ssh-support
添加到~/.gnupg/gpg-agent.conf
文件中5.3.2 指定用于 SSH 的主秘钥指纹
将主秘钥指纹添加到
~/.gnupg/sshcontrol
中5.3.3 使用
gpg-agent
替代ssh-agent
服务将以下两行添加至
~/.zshrc
, 如果是 bash 则添加至~/.bashrc
, 并执行source ~/.zshrc
或重启命令行生效即可.1
2# GPG Agent Sock
export SSH_AUTH_SOCK="${HOME}/.gnupg/S.gpg-agent.ssh"
5.4 验证 SSH 功能.
由于篇幅关系, 这里直接验证 github, 不再演示登录 vps 操作.
1
2
3william ~ ssh -T git@github.com
Hi orangejx! You've successfully authenticated, but GitHub does not provide shell access.
william ~
6. 结束语
- 使用 GPG 应该有一段时间了, 验证功能是真的方便, 只有有个主秘钥对就能满地跑了. 验证 vps 和 GitHub 都不用再生成新的秘钥, 有这个主秘钥对管理很方便.
- 还有这个签名功能, 每个项目还可以分开来设置签名秘钥.
- 加密功能我一般是用在邮件通信, 在
Mail.app
上配置下 GPG 就可以收发经过加密和签名的邮件了, 不过这个功能我用的比较少, 很少会用到需要加密的邮件, 在实际应用场景中就更少了, 只有Facebook
的通知邮件是支持的. 目前我知道的是这样的, 也许还有别的, 欢迎补充.