modified | Thursday 1 May 2025 |
---|
Monday, August 16, 2021 at 19:12
GPG 的 正 确 使 用 妆 势
Rainshaw
Rainshaw「s Blog
关 于 GPG 的 基 本 概 念 , 这 里 就 不 过 多 阑 述 了 , 没 有 基 础 知 识 的 同 学 建
议 先 学 一 些 网 络 上 的 基 础 教 程 。 要 先 对 GPG 有 一 定 的 基 础 理 解 。
[scode type=「“yellow「“] 本 文 中 生 成 的 GPG 密 钥 仅 为 示 例 使 用 , 本 人 并
不 使 用 文 中 的 密 钥 , 请 注 意 鉴 别 。[/scode]
准 备 工 作
了 解 GPG 基 本 概 念 , 熟 悉 命 令 行 操 作
目 安 装 好 虞 拟 机 发 却 个 效 Tails 系 统 镜 像
3. 一 颗 追 求 信 息 安 全 的
核 心 思 想
平 时 只 使 用 子 密 钻 , 将 主 密 钥 存 储 在 受 信 的 地 方 例 如 TPM 或 进 行 加 密 。
创 建 主 密 钢
首 先 创 建 一 个 新 的 GPG 密 钥 对 , 一 定 要 在 虚 拟 机 或 者 Tails 或 者 你 信 任
的 电 脑 上 操 作 。
使 用 –full-generate-key 和 –expert 来 生 成 密 钥 对 ,
RSA4096 比 ECC Curve 25519 要 安 全 一 点 , 河 河 p
RSA4096, 且 只 用 来 Certify。
rainshawubunttlsS _qnaq -f11-aeneratekKey -exDeT 三
首 先 创 建 一 个 新 的 GPG 密 钥 对 , 一 定 要 在 虚 拟 机 或 者 Tails 或 者 你 信 任
的 电 脑 上 操 作 。
使 用 –full-generate-key 和 –expert 来 生 成 密 钥 对 , 由 于
RSA4096 比 ECC Curve 25519 要 安 全 一 点 , 这 里 我 们 的 主 密 钥 使 用
RSA4096, 且 只 用 来 Certify。
rainshaweubuntu:~$ gpg –fulLl1-generate-key –expert
gPg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software
Foundation, Inc .
This is free software: You are free to change and redistribute
it。
There is NO NARRANTY,to the extent permitted by Law.。
PlLease select what kind of key you want :
(1) RSA and RSA (default)
(2) DSA and BLgamal
(3) DSA (sign on1y )
(4) RSA (sign on1y )
(7) DSA (set your own capabilities )
(8) RSA (set your own capabilities )
(9) ECC and BCC
(10) ECC (sign on1y)
(11) ECC (set your own Capabilities )
(13) Bxisting key
(14) Bxisting key from carQd
Your Selection? 8
选 择 8 自 定 义 用 途
Possible actions for a RSA key: Sign Certify EncrYPt
Authenticate
Current allowed actions: 8ign Certify EncrYPL
(58) Toggle the sign capability
(B) Toggle the encrypt capability
(A) Toggle the authenticate capability
(0) Finished
Possible actions for a RSA key: Sign Certify EncrYPt
Authenticate
Current allowed actions: 8ign Certify EncrYPL
(58) Toggle the sign capability
(B) Toggle the encrypt capability
(A) Toggle the authenticate capability
(0) Finished
Your Selection? 8
Possible actions for a RSA key: Sign Certify EncrYPt
Authenticate
Current allowed actions: Certify EncrYPL
(58) Toggle the sign capability
(B) Toggle the encrypt capability
(A) Toggle the authenticate capability
(0) Finished
Your selection? e
Possible actions for a RSA key: Sign Certify EncrYPt
Authenticate
Current allowed actions: CertifyY
(58) Toggle the sign capability
(B) Toggle the encrypt capability
(A) Toggle the authenticate capability
(0) Finished
Your selection? d
去 掉 Sign 签 名 、Encrypt 加 密 用 途 , 只 保 留 Certify 证 明 用 途 。
RSR keys may be between 1024 and 4096 bits Long .
What keysize do you want? (3072) 4096
使 用 4096 位 RSA 密 钥 更 安 全 , 基 本 无 法 破 解 。
Ru KeyS may 2e 2ecween u<4 _and 《U46 L5S Ong 。
What keysize do you want? (3072) 4096
使 用 4096 位 RSA 密 钥 更 安 全 , 基 本 无 法 破 解 。
Requested keysize is8 4096 bits
PLease specify how Long the key shouLd be Valid.
0 = key does not expire
Key is8 valid for? (0)
Key does not expire at al1
Is this correct2? (Y/N) Y
妓 置 密 钥 的 有 效 期 , 我 们 可 以 仔 细 的 存 许 沥 这 里 可 以 选 择 永 不 过
期 , 当 然 你 也 可 以 自 己 选 挟 交 近 时 , 再 根 据 需 求 自 行
决 定 是 启 用 新 密 钥 远 是 将 旧 霸 钥 廷 长 相 效 期 。
GnuPG needs to construct a uhser ID to identify Your key 。
Real name: RainShaw
Email addreSS: XXXX@LiVe .Com
Comment :
You Selected thiS USER-ID :
“Rainshaw <XXXX@1iVe .COm>“
Change _(N)ame;, (C)omment, (B)mail or (0)kay/(Q)uit? o
输 入 你 的 个 人 信 息 ,Comment 注 释 可 以 不 填 。
We need to generate a Lot of random bytes.。 It is a good idea to
perform
some other action (type on the keyboard,move the mouse
utilLize the
disks) during the prime generation; this gives the random
numbeI
generator a better chance to gain enough entropy.
We need to generate a Lot of random bytes.。 It is a good idea to
perform
some other action (type on the keyboard,move the mouse
utilLize the
disks) during the prime generation; this gives the random
numbeI
generator a better chance to gain enough entropy 。
gpg: key 0xF2FE7008B02578B4 marked as uLtimately trusted
gpg: directory “/home/rainshaw/ .gnupg/openpgp-revocs .d「 created
gpg: revocation certificate stored as
“/home/rainshaw/ .gnupg/openpgp-
revocs .d/B5C100450331878DD5535261F2FE7008B02578B4 .rev「
public and secret key created and 58igned。
pub rsa4096/F2FE7008B02578B4 16 August 2021 [C1
Key fingerprint = B5C1 0045 0331 878D D553 “5261 F2FEB
7008 B025 78B4
uiQd RainShaw 一 XXXX@ 1iVe .Com>
伟 H 建 议 使 用 从 未 使 用 过 的 且 易 记 的 密 码 , 长 度
[scode type=“blue“] 如 果 你 之 前 使 用 过 GPG, 你 可 能 有 疑 问 , 密 码 越
长 之 后 使 用 的 时 候 不 会 很 繁 琐 么 , 每 次 都 要 输 入 。 不 要 担 心 , 后 面 会 教
给 大 家 怎 么 解 决 这 个 问 题 , 方 法 是 给 子 密 钻 设 置 与 主 蝈 钥 不 间 的 密 码 ,
一 方 面 方 便 日 常 使 用 , 古 一 方 面 也 是 对 主 密 钥 的 进 一 步 保 护 。[/scode]
格 式 化 密 钥
如 果 你 观 察 仔 细 的 话 , 会 发 现 我 最 终 打 印 出 来 的 密 钥 格 式 和 你 可 能 不 太
一 吴 人 这 只 是 格 式 化 , 下 面 教 给 大 家 如 何 格 式 化 密 钥 输 出 ,
佶 猴 俸 杨 。
不 论 你 用 什 么 编 辑 器 , 只 需 在 -/ .gnupg/gpg.conf 文 件 中 输 入 以 下 内
容 即 可
keyid-format Long
如 果 你 观 察 仔 细 的 话 , 会 发 现 我 最 终 打 印 出 来 的 密 钼 格 式 和 你 可 能 不 太
一 吴 这 只 是 格 式 化 , 下 面 教 给 大 家 如 何 格 式 化 密 钥 输 出 ,
佶 猴 俸 杨 。
不 论 你 用 什 么 编 辑 器 , 只 需 在 -/ .gnupg/gpg.conf 文 件 中 输 入 以 下 内
容 即 可
keyid-format Long
with-fingerprint
这 样 之 后 输 出 密 钥 时 就 会 自 动 打 印 密 钥 的 长 ID 和 指 纹 啦 。
创 建 子 密 钥
刚 刚 生 成 的 主 密 钥 名 为 F2FE7008B0257884 , 它 只 有 [c1 用 途 , 只 能 用
来 签 发 子 密 钻 , 为 了 满 足 日 常 使 用 我 们 需 要 新 建 三 个 子 密 钥 , 分 别 用 来
Sign 签 名 、Encrypt 加 密 、Authenticate 认 证 。
Sign 签 名 密 钥
使 用 –expert 和 –edit-key F2FE7008B0257884 ( 将 其 中 的 密 钥 id
换 成 你 的 ) 。
rainshaweubuntu:~$ gpg –expert –edit-key F2FE7008B02578B4
gPg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software
Foundation, Inc .
This is free software: You are free to change and redistribute
it。
There is NO NARRANTY,to the extent permitted by Law.。
Secret key is availablLe .
gpg: checking the trustdb
gpg: marginals needed: 3 _completes needed: 1 _trust model: pgpP
gpg: depth: 0 “Valid: 1 “sSigqned: 0 “trusts _0-, 0q , 0n , 0m
使 用 –expert 和 –edit-key F2FE7008B0257884 ( 将 其 中 的 密 钥 id
换 成 你 的 ) 。
rainshaweubuntu:~$ gpg –expert –edit-key F2FE7008B02578B4
gPg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software
Foundation, Inc .
This is free software: You are free to change and redistribute
it。
There is NO NARRANTY,to the extent permitted by Law.。
Secret key is availablLe .
gpg: checking the trustdb
gpg: marginals needed: 3 _completes needed: 1 _trust model: pgpP
gpg: depth: 0 Valid: 1 “signed: 0 “trusts: 0~-“ 0q, 0n, 0mv
0 王 , 1u
sec “Isa4096/F2FB7008B02578B4
created: 16 August 2021 expires: never usage: C
trust: uLtimate validity: ulLtimate
[uLtimate] (1) Rainshaw <XXXX61iVe . Com>
gpg> addkey
PlLease select what kind of key You want :
(3) DSA (sign on1y )
(4) RSA (sign on1y )
(5) BLgamal (encrypt on1y )
(6) RSA (encrypt on1y )
(7) DSA (set your own capabilities )
(8) RSA (set your own capabilities )
(10) ECC (sign on1y)
(11) ECC (set your own Capabilities )
(12) ECC (encrypt on1y )
(13) Bxisting key
(14) Bxisting key from carQd
Your Selection? 8
选 8 自 定 义 用 途 。
Possible actions for a RSA key: 58ign Encrypt Authenticate
厂 万 万 八 仁 一 一 月 月 一 5 一 月 二 八 一 二 一 吴 一 尸 干 一 口 仪 口 八 丨 r 丨
Possible actions for a RSA key: 58ign Encrypt Authenticate
Current allowed actions: Sign EncrYPL
(58) Toggle the sign capability
(B) Toggle the encrypt capability
(A) Toggle the authenticate capability
(0) Finished
Your Selection? e
Possible actions for a RSA key: 58ign Encrypt Authenticate
Current allowed actions: Sign
(58) Toggle the sign capability
(B) Toggle the encrypt capability
(A) Toggle the authenticate capability
(0) Finished
Your selection? d
RSR keys may be between 1024 and 4096 bits Long .
What keysize do you want? (3072) 4096
Requested keysize is8 4096 bits
只 保 留 Sign 签 名 用 途 , 并 输 入 长 度 为 4096.
PlLease specify how Long the key shoulLd be valid。
0 = key does not expire
Key is valid for? (0) 1Y
Key expires at Tue 16 Aug 2022 02:52:10 AM PDT
Is this correct2? (Y/N) Y
Really create? (Y/N) Y
输 入 子 宿 钥 有 效 期 , 建 议 不 要 选 择 永 久 有 效 , 当 子 密 钥 临 近 过 期 或 已 过
期 骰 :> 我 们 可 以 使 用 主 密 钢 对 子 密 钥 进 进 行 延 长 有 效 期 , 这 样 可 以 进 一 步
丙 女 王 。
保 证 安 全 。
[scode type=「“yellow「“] 当 然 这 样 之 后 会 更 加 麻 烦 一 些 , 比 如 你 需 要 替 换
GitHub 上 的 签 名 公 钥 等 。[/scode]
We need to generate a Lot of random bytes.。 It is a good idea to
perform
some other action (type on the keyboard,move the mouse
utilLize the
disks) during the prime generation; this gives the random
numbeI
generator a better chance to gain enough entropy 。
sec “Isa4096/F2FB7008B02578B4
created: 16 August 2021 expires: never usage: C
trust: uLtimate validity: ulLtimate
ssb “Isa4096/0B45187B21327343
created: 16 August 2021 “expires: 16 August 2022 “usage: 8
[uLtimate] (1) Rainshaw <xXXX8&1ive . Com>
gPpg> save
最 后 不 要 忘 记 使 用 save 命 令 保 存 。
此 时 再 看 一 下 现 在 的 密 钥 :
rainshaw8ubuntu:~$ gPg -K
/home/rainshaw/ .gnupg/pubring .kKbx
Sec rSa4096/F2FE7008B02578B4 16 August 2021 [C]
Key fingerprint = B5C1 0045 0331 878D D553 “5261 F2FE
7008 B025 78B4
uid [ultimate] Rainshaw <XXXX81iVe . COm>
ssb rsa4096/0R45187BR21327343 16 August 2021 [S8] [expires: 2022-
08-~16 ]
Encrypt 加 密 宿 钢
同 样 使 用 –expert 和 –edit-key F2FE7008B02578B4 ( 将 其 中 的 密
钥 id 换 成 你 的 ) 。
rainshaweubuntu:~$ gpg –expert –edit-key F2FE7008B02578B4
gPg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software
Foundation, Inc .
This is free software: You are free to change and redistribute
it。
There is NO NARRANTY,to the extent permitted by Law.。
Secret key is availablLe .
sec “Isa4096/F2FB7008B02578B4
created: 16 August 2021 expires: never usage: C
trust: uLtimate validity: ulLtimate
ssb “Isa4096/0B45187B21327343
created: 16 August 2021 “expires: 16 August 2022 “usage: 8
[uLtimate] (1) Rainshaw <XXXX61iVe . Com>
gpg> addkey
PlLease select what kind of key you want :
(3) DSA (sign on1y )
(4) RSA (sign on1y )
(5) BLgamal (encrypt on1y )
(6) RSA (encrypt on1y )
(7) DSA (set your own capabilities )
(8) RSA (set your own capabilities )
(10) ECC (sign on1y)
(11) ECC (set your own capabilities )
(12) ECC (encrypt on1y )
(13) Bxisting key
(14) Bxisting key from carQd
Your Selection? 12
PLease select which elliptic curve You want :
(1) Curve 25519
(3) NIST P-256
(4) NIST P-384
(5) NIST P-521
(6) Brainpool1 P-256
(7) Brainpoo1 P-384
(8) Brainpoo1 P-512
ps d
(1) Curve 25519
(3) NIST P-256
(4) NIST P-384
(5) NIST P-521
(6) Brainpool1 P-256
(7) Brainpoo1 P-384
(8) Brainpoo1 P-512
(9) secp256k1
Your Selection? 1
PlLease specify how Long the key shoulLd be valid。
0 = key does not expire
Key is valid for? (0) 1Y
Key expires at Tue 16 Aug 2022 03:06:34 AM PDT
Is this correct2? (Y/N) Y
Really create? (Y/N) Y
We need to generate a Lot of random bytes.。 It is a good idea to
perform
some other action (type on the keyboard,move the mouse
utilLize the
disks) during the prime generation; this gives the random
numbeI
generator a better chance to gain enough entropy 。
sec “Isa4096/F2FB7008B02578B4
created: 16 August 2021 expires: never usage: C
trust: uLtimate validity: ulLtimate
ssb “Isa4096/0B45187B21327343
created: 16 August 2021 “expires: 16 August 2022 “usage: 8
Ssb “_cV25519/7A3B9781DAD1C286
created: 16 August 2021 “expires: 16 August 2022 “usage: 卫
[uLtimate] (1) Rainshaw <XXXX81iVe . Com>
gPpg> save
这 里 尝 试 使 用 ECC 作 为 加 密 解 密 的 算 法 , 速 度 会 更 快 一 点 。 来 源 于 博
主 ulyc 的 介 绍 :
[scode type=「“share“] 美 国 国 家 标 准 与 技 术 研 究 院 (NIST) 系 列 椭 圆 曲
线 、Brainpool 系 列 榈 圆 曲 线 、secp256k1 都 存 在 不 同 的 安 全 风 险 , 不 建
议 使 用 。
C 算 河 的 99 他 在 圭 于 , 在 同 等 强 度 下 ,ECC 的 密 钥 长 度 要 小 的
不 提 密 钥 长 度 说 安 全 性 都 是 耍 流 氓 ,RSA 4096 的 安 全 强 度 是 要 好 于
ed25519 的 。[/scodej]
Authenticate 认 证 宿 钥
认 证 密 钥 用 处 不 多 , 平 时 我 们 连 SSH 使 用 普 通 的 RSA 密 钥 就 可 以 了 ,
当 然 如 果 你 愿 意 也 可 以 用 GPG 生 成 的 子 密 钥 。 同 样 使 用 –cxmpest 利 -
-edit-key F2FE7008B02578B4 ( 将 其 中 的 密 钥 id 换 成 你 的 ) 。
rainshaw&ubuntu:~$ gpg –expert –edit-key F2FE7008B02578B4
gPg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software
Foundation, Inc .
This is free software: You are free to change and redistribute
it。
There is NO NARRANTY,to the extent permitted by Law.。
Secret key is availablLe .
sec “Isa4096/F2FB7008B02578B4
created: 16 August 2021 expires: never usage: C
trust: uLtimate validity: ulLtimate
ssb “Isa4096/0B45187B21327343
created: 16 August 2021 “expires: 16 August 2022 “usage: 8
Ssb “_cV25519/7A3B9781DAD1C286
created: 16 August 2021 “expires: 16 August 2022 “usage: 卫
[uLtimate] (1) 。 Rainshaw <xXXX8&1ive . Com>
gpg> addkey
PlLease select what kind of key you want :
F
Cottont 余 /
RSR (sign on1Y)
ELgamal (encryPt on1Y)
RSR (encryPt on1Y)
DSR& (set Your own capabilities )
RSR (set Your own capabilities )
ECC (sign on1Y)
ECC (set your own capabilities )
ECC (encrypt on1Y)
Existing key
Existing key from card
Your Selection? 8
Possible actions for a RSA key: 58ign Encrypt Authenticate
Current allowed actions: Sign EncrYPL
(5)
( 卫 )
()
(0)
Toggle the sign capabilLity
Toggle the encrypt capabilLity
Toggle the authenticate capabilLity
Finished
Your Selection? a
Possible actions for a RSA key: 58ign Encrypt Authenticate
Current allowed actions: 58ign Encrypt Authenticate
(5)
( 卫 )
()
(0)
Toggle the sign capabilLity
Toggle the encrypt capabilLity
Toggle the authenticate capabilLity
Finished
Your Selection? 8
Possible actions for a RSA key: 58ign Encrypt Authenticate
Current allowed actions: Encrypt Authenticate
(5)
( 卫 )
()
(0)
Toggle the sign capabilLity
Toggle the encrypt capabilLity
Toggle the authenticate capabilLity
Finished
Your Selection? e
一 人 明 子 人 一 县 C 一 人 人 明 王 东明 仪 伟 子 目 人 CPC 一 CG
Current allowed actions: Authenticate
(58) Toggle the sign capability
(B) Toggle the encrypt capability
(A) Toggle the authenticate capability
(0) Finished
Your selection? d
RSR keys may be between 1024 and 4096 bits Long .
What keysize do you want? (3072) 4096
Requested keysize is8 4096 bits
PlLease specify how Long the key shoulLd be valid。
0 = key does not expire
Key is valid for? (0) 1Y
Key expires at Tue 16 Aug 2022 03:12:10 AM PDT
Is this correct2? (Y/N) Y
Really create? (Y/N) Y
We need to generate a Lot of random bytes.。 It is a good idea to
perform
some other action (type on the keyboard,move the mouse
utilLize the
disks) during the prime generation; this gives the random
numbeI
generator a better chance to gain enough entropy 。
sec “Isa4096/F2FB7008B02578B4
created: 16 August 2021 expires: never usage: C
trust: uLtimate validity: ulLtimate
ssb “Isa4096/0B45187B21327343
created: 16 August 2021 “expires: 16 August 2022 “usage: 8
Ssb “_cV25519/7A3B9781DAD1C286
created: 16 August 2021 “expires: 16 August 2022 “usage: 卫
ssb Sa4096/4FFFC7DRA1ABB8BB5
created: 16 August 2021 “expires: 16 August 2022 “usage: R
[uLtimate] (1) Rainshaw <xXXX8&1ive . Com>
qpq>“SaVe
J 标 I 一 人 IJ 异 , 八 f 2o
导 出 密 钢
复 习 下 我 们 的 核 心 思 想 , 主 密 钥 必 须 存 储 在 安 全 的 地 方 或 被 加 密 , 1
钥 用 来 日 常 使 用 。 为 了 安 全 , 我 们 将 不 会 存 储 主 密 钥 的 明 文 , 虽 然 这
明 文 也 被 我 们 之 前 设 置 的 密 码 保 护 着 , 侄 为 了 财 加 安 全 , 我 们 再 套 一 层
一 有 点 晦 铭 子 撑 的 )-。
刚 才 我 们 已 经 生 成 了 加 密 蜜 钥 , 所 以 只 要 加 密 密 钻 被 保 护 好 , 我 们 就 可
以 使 用 加 密 密 钥 给 主 密 钥 套 一 层
导 出 公 钢
一 种 是 导 出 所 有 的 公 钥 , 常 用 于 公 开 到 特 定 服 务 器 。
rainshawe&ubuntu:~/Desktop\( gpg -ao PK.key --export F2FE7008B02578B4 rainshaw&ubuntu:~/Desktop\) cat PK.key
mQINBGEaMF8BEADD1NPg6UCRKEjDnVjYVMWzz26YTRWXmgux58hcFp3u+UE/o3Ji
eJiNtAGMXYWrvL1f/KhpUxQHKm2+C30JhlVhk3Tu9POXDQb10BfBNtHIj3+Ei+3k
中 间 很 长 很 长
XGYyiVo7R4BCiGHekJk8+jqqulYcRW1LimHGgyBhYDyvOg88qovp5+fBRpPZNA39RSm4
BOBkecuPQJ7tcdXz1l1a++eECgUBVdmyPT4YVR9 jEJRJSPNCVXSqw5G
=VhBK
[scode type=“yello“] 注 意 这 个 公 钥 仅 用 于 示 例 , 请 不 要 将 这 个 公 钥 和 博
主 关 联 起 来 (@「“「@)[/scode]
第 二 种 是 导 出 某 个 子 密 钥 的 公 钥 , 常 用 于 当 有 多 个 同 一 用 途 的 密 钥 时 指
定 密 $ 莲 不
Rom
rainshaw&ubuntu:~/Desktop$ gpg -a –export –outPut PK.key
F2FE7008B02578B4
FiLle“pk.key「“ exists。 0verwrite? (Y/N) Y
rainshaweubuntu:~/Desktop$ gpg -a –export –outPut PK.key
F2FE7008B02578B4 !
FiLle “pk.key「“ existS。 0verwrite2? (Y/N) 史
Enter new filLename: PKk2 .key
rainshaw&ubuntu:~/Desktop$ gpg -a –export –outPut Pk-sign .key
0B45187B21327343!
rainshawe&ubuntu:~/Desktop$ gpg -a –export –outpPut Pk-enc .key
7R3B9781DAD1C286!
rainshawe&ubuntu:~/Desktop$ gpg -a –export –outpPut Pk-auth.key
4FFFC7DR1ABB8BE5 !
导 出 主 密 钥 私 钥
使 用 子 加 密 密 钥 加 密 主 密 钻 , 注 意 将 下 面 命 令 的 Rainshaw 改 为 你 之 前
设 置 的 名 字 , 如 果 含 有 空 格 的 话 需 要 在 两 端 加 引 号 。
rainshaweubuntu:~/Desktop$ gpg -a –export-secret-key
F2FE7008B02578B84 | gpg -e -r Rainshaw | add of=sk.key
17+2 recordS in
17+1 KecordSs out
9095 bytes (9.1 kKB,8.9 KiB) copied,5.82587 s8,1.6 kB/s
[scode type=「“green“] 你 可 以 分 步 执 行 , 看 看 每 步 到 底 做 了 什 么 。
[/scode]
导 出 子 密 钥 私 钥
使 用 子 加 密 密 钥 加 密 Sign 和 Authenticate 密 钥 , 注 意 将 下 面 命 令 的
Rainshaw 改 为 你 之 前 设 置 的 名 字 , 如 果 含 有 空 格 的 话 需 要 在 两 端 加 引
号 。 同 时 一 定 要 注 意 密 钥 ID 一 定 要 改 , 且 感 叹 号 ( 英 文 ) 不 能 省 略 !
rainshawe&ubuntu:~/Desktop$ gpg -a –export-secret-sSubkeys
RAET 77 1 232777212 1 ] “ 二 口 二 一 尺 nah a ] 月 月 ~F 二 ai n t
使 用 子 加 密 密 钥 加 密 Sign 和 Authenticate 密 钢 ; 注 意 将 下 面 命 令 的
Rainshaw 改 为 你 之 前 设 置 的 名 字 , 如 果 含 有 空 格 的 话 需 要 在 两 端 加 引
号 。 同 时 一 定 要 注 意 密 钥 ID 一 定 要 改 , 且 感 叹 号 ( 英 文 ) 不 能 省 略 !
rainshawe&ubuntu:~/Desktop$ gpg -a –export-secret-sSubkeys
0R45187BR21327343! | gpg -e -r Rainshaw | dqd of=sign.key
8+2 records in
8+1 records out
4508 bytes (4.5 kKB,4.4 KiB) copied,5.10913 s,0.9 kB/s
rainshaw&ubuntu:~/Desktop$ gpg -a –export-secret-sSubkeys
4FFFC7DA1ABB8BB5! | gpg -e -r Rainshaw | dd of=auth.key
7+2 records in
7+1 records out
3935 bytes (3.9 KB,3.8 KiB) copied,5.79333 8「, 0 .7 KB/s
对 于 加 密 子 密 钥 就 不 能 再 用 加 密 子 密 钥 加 密 了 ( 禁 止 套 娃 ) 。 对 于 上 面
o 我 们 可 以 随 意 上 传 、 复 制 , 只 要 我 们 保 证 自 己 的 加 密
rainshawe&ubuntu:~/Desktop$ gpg -a –export-secret-sSubkeys
7R3B9781DAD1C2861! | openss1 des3 -salt | dqd of=enc .key
enter des-ede3-cbc encryption password :
Verifying - enter des-ede3-cbc encryption password :
xx WRRNING : _ deprecated key derivation used .
Using -iter of -Pbkdf2 woulLd be betteI .
5+1 records in
5+1 _ records out
2640 bytes (2.6 kKB,2.6 KiB) copied,18.5623 s,0.1 kB/s
过 程 中 会 先 让 你 输 入 GPG 的 密 码 , 然 后 再 输 入 一 个 对 称 加 密 的 密 码 ,
建 议 这 两 个 采 用 不 同 的 值 ( 由 于 前 者 就 是 主 密 钥 的 密 码 , 很 复 杂 , 所 以
我 们 可 以 对 其 稍 作 改 动 作 为 后 者 , 比 如 更 换 其 中 的 数 字 、 符 号 , 或 者 将
寒 砺 顺 序 颜 倒 之 类 的 、)
我 们 可 以 对 其 积 作 改 动 作 加 后 者 , 比 如 更 换 其 中 的 数 子 、 行 号 , 或 者 将
密 码 顺 序 颠 倒 之 类 的 。)
导 出 吊 销 证 书
gpg: key 0xF2FE7008B02578B4 marked as uLtimately trusted
gpg: directory “/home/rainshaw/ .gnupg/openpgp-revocs.d「 created
gpg: revocation certificate stored as
“/home/rainshaw/ .gnupg/openpgp-
revocs .d/B5C100450331878DD5535261F2FE7008B02578B4 .rev「
public and secret key created and 58igned。
pub rsa4096/F2FE7008B02578B4 16 August 2021 [C1
Key fingerprint = B5C1 0045 0331 878D D553 “5261 F2FEB
7008 B025 78B4
uiQd RainShaw 一 XXXX@ 1iVe .Com>
在 创 建 主 密 钥 的 同 时 ,GPG 为 我 们 生 成 了 一 个 主 密 钥 的 吊 销 证 书 , 位
于 .gnupg/openpgp-revocs . 生 尿 录 上 。 我 们 需 要 对 其 更 加 精 心 备 份 和
保 护 , 为 仰 么 呢 , 因 为 如 果 你 主 密 钥 没 丢 , 而 这 个 吊 销 证 书 丢 了 , 那 你
的 主 密 钥 就 可 肉 $ 被 攻 击 者 吊 销 , 这 样 一 来 , 俨 寺 主 密 钥 的 精 心 保 护 还 有
啶 用 呢 这 里 偷 个 懒 , 使 用 的 是 之 前 生 成 的 加 密 蛰 钥 。
rainshaw&ubuntu:~/Desktops cat ~/.gnupg/openpgp-
revocs.d/B5C100450331878DD5535261F2FE7008B02578B4.rev | gpg -e
2+2 records in
2+1 ecords _out
1376 bytes (1.4 kKB,1.3 KiB) copied,0.00671809 s,205 kB/s
如 果 佣 追 求 更 安 全 , 那 我 建 议 你 再 生 成 一 个 Encrypt 加 密 蜜 钥 , 不 导 出
它 , 只 用 它 来 加 密 这 个 吊 销 证 书 , 讷 样 口 有 在 你 的 主 密 钥 泄 露 之 后 , 尘
有 可 能 泄 露 这 个 吊 销 证 书 , 而 这 旷 我 们 肯 定 是 要 吊 销 的 , 所 以 安 全 箱 很
高 。 由 于 此 时 你 的 库 中 有 两 个 加 密 密 钥 , 导 致 在 进 行 加 密 时 会 自 动 选 择
加 密 密 钻 ( 一 般 会 用 较 新 的 ) , 此 时 为 了 拱 定 加 密 密 钥 , 我 们 需 要 采 用
与 上 文 不 同 的 命 令 。
C 5
有 可 能 泄 露 这 个 吊 销 证 书 , 而 这 旷 我 们 肥 定 是
高 。 C 标 李 训
加 密 宿 钥 ( 一 般 会 用 较 新 的 ) , 此 时 为 了 指 定
与 上 文 不 同 的 命 令 。
rainshaw&ubuntu:~/Desktop$ gPg -K
/home/rainshaw/ .gnupg/pubring .kKbx
sec rSa4096/F2FE7008B02578B4 16 August 2021 [C
Key fingerprint = B5C1 0045 0331 878D D553 “5261 F2FE
7008 B025 78B4
uid [uLtimate] Rainshaw <XXX61ive . Com>
SSbD rSa4096/0E45187E21327343 16 August 2021 [S] [expires: 2022-
08-16 ]
SSbD cV25519/7A3B9781DAD1C286 16 August 2021 _[E] [expires: 2022-
08-16 ]
SSbD rSa4096/4FFFC7DRA1RBE8BE5 16 August 2021 [&] [expires: 2022-
08-16 ]
SSbD cV25519/82A36E1B874BE22B 16 August 2021 _[E] [expires: 2022-
08-16 ]
rainshaw8ubuntu:~/Desktop$ gpg -a –export –output Pk-enc2 .key
82R36B1B874BE22B!
rainshaweubuntu:/Desktop$ cat -/ .gnupg/openpgp-
revocs .Q/B5C100450331878DD5535261F2FE7008B02578B4.rev | gpg -e
-f pk-enc2.key | dd of=rev .key
2+2 records in
2+1 records out
1379 bytes (1.4 kKB,1.3 KiB) copied,0.00649605 s,212 kB/s
[scode type=“red“] 如 果 你 刚 刚 生 成 了 一 个 新 的 加 密 子 密 钥 , 记 得 重 新
导 出 主 密 钻 ! [/scode]
rainshaweubuntu:~/Desktop$ gpg -a –export-secret-key
F2FE7008B02578B4 | gpg -e -f pk-enc.key | dd of=sk2 .key
18+3 records in
19+1 KecordSs out
9774 bytes (9.8 kKB,9.5 KiB) copied,6.38228 s8,1.5 kB/s
胡 l 的 ddtdt
rainshaweubuntu:~/Desktop$ gpg -a –export-secret-key
F2FE7008B02578B4 | gpg -e -f pk-enc.key | dd of=sk2 .key
18+3 records in
19+1 KecordSs out
9774 bytes (9.8 kKB,9.5 KiB) copied,6.38228 s8,1.5 kB/s
[scode type=「“yellow“] 注 意 这 里 使 用 的 是 第 一 个 加 密 密 钥 ! [/scodej]
传 输 文 件
好 , 到 目 前 为 止 , 我 们 生 成 了 几 个 非 常 安 全 的 文 似 , 他 们 可 以 随 意 分 发
上 传 _( 但 建 议 还 是 不 要 随 意 分 发 ) , 之 后 每 次 使 用 时 只 需 将 所 需 的 私 钥
文 件 下 载 然 后 解 密 安 装 即 可 。
此 时 如 果 你 使 用 虚 拟 机 启 动 Tails OS 作 为 生 成 密 钥 的 系 统 , 那 你 可 能 会
发 现 好 像 无 法 把 子 蜜 钥 从 虚 拟 机 中 复 制 出 来 , 这 就 很 蛋 疼 了 , 我 的 解 决
方 法 是 在 客 户 端 电 脑 上 开 设 一 个 SSH Server, 在 Tails 中 使 用 SCP 命 令
将 文 件 传 输 出 来 , 具 体 命 令 大 家 可 以 自 行 百 度 。 如 果 你 使 用 的 是 非 虚 拟
机 运 行 的 Tails OS, 那 你 可 以 插 入 一 个 新 的 U 盘 存 储 这 些 文 件 。 如 果 你
是 其 他 的 情 况 , 请 自 行 解 决 。
销 毁 原 文 件
当 你 把 上 述 文 件 成 功 传 输 出 来 之 后 , 根 据 不 同 的 情 况 , 你 可 能 需 要 销 毁
原 始 的 蜜 钥 文 件 。 如 果 是 虚 拟 机 , 那 你 可 以 直 接 删 除 虚 拟 机 即 可 , 如 果
是 Tails 可 以 使 用 鼠 标 右 键 点 击 .gnupg 文 件 夹 然 后 选 择 wipe 即 可 , 如
果 是 其 他 情 况 , 请 自 行 搜 索 擦 除 文 件 的 方 法 。
导 入 密 钢
导 入 密 钥 是 十 分 简 单 的 , 首 先 对 加 密 密 钥 进 行 解 密 , 然 后 导 入
rainshawubuntts~/pesktonS“_ppenss1“_des3 -d -in“_ena key | apa 一 一
导 入 密 钥 是 十 分 简 单 的 , 首 先 对 加 密 密 钥 进 行 解 密 , 然 后 导 入
rainshaweubuntu:~/Desktops openss1 des3 -d -in enc.key | gpg –
import
enter des-ede3-cbc decryption password :
xx WRRNING : _ deprecated key derivation used .
Using -iter of -Pbkdf2 woulLd be betteI .
gpg: key F2FE7008B02578B4: public key “Rainshaw <xXX&1ive .com>“
imported
gpg: To migrate“secring.gpg「 ,with each smartcard,Irun: gPg –
card-status
gpg: key F2FE7008B02578B4: secret key imported
gpg: Total number processed: 1
gpPg: imported: 1
gpPg: secret keys read: 1
gpPg: secret keys imported: 1
刑
然 后 利 用 这 个 加 密 密 钥 对 你 在 某 个 机 器 上 所 要 使 用 的 子 密 钥 进 行 解 密 然
后 导 入
如 要 导 入 签 名 密 钥 :
rainshaweubuntu:~/Desktops gpg -d sign.key | gpg –import
gpg: encrypted with 256-bit ECDH key,ID 7A3B9781DAD1C286 ,
created 16 August 2021
“Rainshaw <XXX@1iVe .com>“
gpg: key F2FE7008B02578B4: “Rainshaw <xXX&1ive.com>“ 1 new
signature
gpg: key F2FE7008B02578B4: “Rainshaw <xXX&1ive.com>“ 1 new
subkey
gpg: To migrate“secring.gpg「 ,with each smartcard,Irun: gPg –
card-status
gpg: key F2FE7008B02578B4: secret key imported
gpg: Total number processed: 1
gpPg: new subkeys: 1
gpPg: new signatures: 1
gpPg: secret keys read: 1
gpPg: secret keys imported: 1
Cc 朋 沥 一 认 t t 余 园 国 阮 一 认 朋 cd
gpg: encrypted with 256-bit ECDH key 「 ID 7A3B9781DAD1C286 ,
created 16 August 2021
“Rainshaw <XXX@1iVe .com>“
gpg: key F2FE7008B02578B4: “Rainshaw <xXX&1ive.com>“ 1 new
signature
gpg: key F2FE7008B02578B4: “Rainshaw <xXX&1ive.com>“ 1 new
subkey
gpg: To migrate“secring.gpg「 ,with each smartcard,Irun: gPg –
card-status
gpg: key F2FE7008B02578B4: secret key imported
gpg: Total number processed: 1
gpPg: new subkeys: 1
gpPg: new signatures: 1
gpPg: secret keys read: 1
gpPg: secret keys imported: 1
如 要 导 入 认 证 密 钥 :
rainshaweubuntu:~/Desktops gpg -d auth.key | gpg –import
gpg: encrypted with 256-bit ECDH key,ID 7A3B9781DAD1C286 ,
created 16 August 2021
“Rainshaw <XXX@1iVe .com>“
gpg: key F2FE7008B02578B4: “Rainshaw <xXX&1ive.com>“ 1 new
signature
gpg: key F2FE7008B02578B4: “Rainshaw <xXX&1ive.com>“ 1 new
subkey
gpg: To migrate“secring.gpg「 ,with each smartcard,Irun: gPg –
card-status
gpg: key F2FE7008B02578B4: secret key imported
gpg: Total number processed: 1
gpPg: new subkeys: 1
gpPg: new signatures: 1
gpPg: secret keys read: 1
gpPg: secret keys imported: 1
修 改 信 任 级 别
炀 示 我 们 导 入 的 证 书 并 不 是 生 成 的 , 所 以 其 信 任 级 别 为 未 知 , 需 要 修 改
由 于 我 们 导 入 的 证 书 并 不 是 生 成 的 , 所 以 其 信 任 级 别 为 未 知 , 需 要 修 改
信 任 级 别
rainshaw&ubuntu:~/Desktop$ gpg –expert –edit-key Rainshaw
gPg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software
Foundation, Inc .
This is free software: You are free to change and redistribute
it。
There is NO NARRANTY,to the extent permitted by Law.。
Secret subkeys are availablLe .
pub rsa4096/F2FE7008B02578B4
created: 16 August 2021 expires: never usage: C
trust: unknown validity: unknown
Ssb “_cV25519/7A3B9781DAD1C286
created: 16 August 2021 “expires: 16 August 2022 “usage: 卫
ssb “Isa4096/0B45187B21327343
created: 16 August 2021 “expires: 16 August 2022 “usage: 8
ssb Sa4096/4FFFC7DRA1ABB8BB5
created: 16 August 2021 “expires: 16 August 2022 “usage: R
[ unknown] (1) . Rainshaw <xXXX61ive . Com>
gPg> trust
pub rsa4096/F2FE7008B02578B4
created: 16 August 2021 expires: never usage: C
trust: unknown validity: _ unknown
Ssb “_cV25519/7A3B9781DAD1C286
created: 16 August 2021 “expires: 16 August 2022 “usage: 卫
ssb “Isa4096/0B45187B21327343
created: 16 August 2021 “expires: 16 August 2022 “usage: 8
ssb Sa4096/4FFFC7DRA1ABB8BB5
created: 16 August 2021 “expires: 16 August 2022 “usage: R
[ unknown] (1) . Rainshaw <xXXX61ive . Com>
PlLease decide how far you trust this user to correctL1y verify
other users「 key8
(by Looking at passports「,checking fingerprints from different
sources「 etc . )
Cssooioiiuoosudyiioaigy ia xici vol
other users「 key8
(by Looking at passports「,checking fingerprints from different
sources「 etc . )
= I don 「 七 know or won L 5ay
I do NOT trust
I trust marginal1y
= 工 trust fuL1Y
工
D
= I trust uLtimatel1Y
ack to the main menu
日 u 心 w N 厂
Your decision? 5
Do you really want to set this key to uLtimate trust? (Y/N) Y
pub rsa4096/F2FE7008B02578B4
created: 16 August 2021 expires: never usage: C
trust: uLtimate validity: unknown
Ssb “_cV25519/7A3B9781DAD1C286
created: 16 August 2021 “expires: 16 August 2022 “usage: 卫
ssb “Isa4096/0B45187B21327343
created: 16 August 2021 “expires: 16 August 2022 “usage: 8
ssb sa4096/4FFFC7DRA1ABB8BB5
created: 16 August 2021 “expires: 16 August 2022 “usage: R
[ unknown] (1) . Rainshaw <xXXX61ive . Com>
PlLease note that the shown key validity is not neces5ari1Y
correct
unless You restart the Program。
gPg> quit
rainshaw&ubuntu:/Desktop$ gPg -K-“ 0q, 0n, 0mv
gpg: checking the trustdb
gpg: marginals needed: 3 _completes needed: 1 _trust model: pgpP
gpg: depth: 0 Valid: 1 “signed: 0 “trusts: 0
0 王 , 1u
/home/rainshaw/ .gnupg/pubring .kKbx
sec 汀 sa4096/F2FB7008B02578B4 16 August 2021 [C]
Key fingerprint = B5C1 0045 0331 878D D553 “5261 F2FE
7008 B025 78B4
uid [uLtimate] Rainshaw <XXX61ive . Com>
SSbD cVv25519/7A3B9781DAD1C286_ 16 August 2021 _1E1 “_「expires: 2022-
cdothicciiiilidddistdiotinidioiniigdotiniA H
Key fingerprint = B5C1 0045 0331 878D D553 “5261 F2FE
7008 B025 78B4
uid [ulLtimate] Rainshaw <XXX6@1iVe . COm>
ssb cv25519/7A3B9781DAD1C286 16 August 2021 [B] [expires: 2022-
08-16 ]
ssb rsa4096/0R45187BR21327343 16 August 2021 [S8] [expires: 2022-
08-16 ]
ssb rsa4096/4FFFC7DA1ABE8BE5 16 August 2021 [A] [expires: 2022-
08-16 ]
修 改 密 码
上 面 提 到 过 , 我 们 在 生 成 主 密 钥 时 使 用 了 一 个 非 常 非 常 不 常 用 、 非 常 非
常 复 杂 的 密 码 , 在 上 面 的 操 作 中 , 我 们 几 乎 每 个 操 作 都 要 输 入 至 少 一 次
这 个 密 码 , 很 不 方 便 。 这 里 教 给 大 家 如 何 修 改 子 密 钥 的 密 码 。
如 果 你 搜 索 gpg subkey change passphrase 这 些 关 键 词 的 话 , 你 会
看 到 很 多 帖 子 说 GPG 无 法 实 现 这 种 需 求 , 但 在 我 实 际 操 作 后 发 现 , 里
然 给 子 密 钥 修 改 密 码 会 提 示 错 误 , 但 实 际 密 码 是 修 改 成 功 了 的 。
首 先 我 们 在 机 器 上 导 入 需 要 的 子 密 钥 , 如 上 面 操 作 就 可 , 注 意 一 定 不 要
导 入 主 密 钻 ! !
然 后 我 们 直 接 修 改 密 码 :
rainshaw&ubuntu:~/Desktop$ gpg –expert –edit-key Rainshaw
gPg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software
Foundation, Inc .
This is free software: You are free to change and redistribute
it。
There is NO NARRANTY,to the extent permitted by Law.。
Secret subkeys are availablLe .
pub rsa4096/F2FE7008B02578B4
created: 16 August 2021 expires: never usage: C
trust: uLtimate validity: ulLtimate
rainshaw&ubuntu:~/Desktop$ gpg –expert –edit-key Rainshaw
gPg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software
Foundation, Inc .
This is free software: You are free to change and redistribute
it。
There is NO NARRANTY,to the extent permitted by Law.。
Secret subkeys are availablLe .
pub rsa4096/F2FE7008B02578B4
created: 16 August 2021 expires: never usage: C
trust: uLtimate validity: ulLtimate
Ssb “_cV25519/7A3B9781DAD1C286
created: 16 August 2021 “expires: 16 August 2022 “usage: 卫
ssb “Isa4096/0B45187B21327343
created: 16 August 2021 “expires: 16 August 2022 “usage: 8
ssb Sa4096/4FFFC7DRA1ABB8BB5
created: 16 August 2021 “expires: 16 August 2022 “usage: R
[uLtimate] (1) 。 Rainshaw <xXXX8&1ive . Com>
gpg> passwad
gpg: key F2FE7008B02578B4/F2FE7008B02578B4: error changing
passphrase: No Secret key
gPpg> save
Key not changed so no update needed。
注 意 到 我 们 完 成 修 改 密 码 操 作 后 虹 然 提 示 我 们 exror changing
passphrase, 但 你 可 以 测 试 一 下 , 密 码 是 修 改 成 功 了 的 !
导 入 主 密 钥
[scode type=“yello“] 一 定 不 要 跳 着 看 ! ! 否 则 功 亏 一 筑 ! ! [/scode]
当 你 完 成 上 面 的 步 骤 后 , 此 时 如 果 机 器 是 你 信 任 的 或 者 有 TPM 芯 片 或 智
能 卡 设 备 的 话 , 你 可 以 选 择 导 入 主 密 钢 :
rainshaweubuntu:~/Desktops gpg -Q sk2 .key | gpg –import
[scode type=“yello“] 一 定 不 要 跳 着 看 ! ! 否 则 功 亏 一 筑 ! ! [/scode]
当 你 完 成 上 面 的 步 骤 后 : 正 时 如 果 机 器 是 你 信 任 的 或 者 有 TPM 芯 片 或 智
能 卡 设 备 的 话 , 你 可 以 选 择 导 入 主 密 钥 :
rainshaweubuntu:~/Desktops gpg -Q sk2 .key | gpg –import
gpg: encrypted with 256-bit ECDH key,ID 7A3B9781DAD1C286 ,
created 16 August 2021
“Rainshaw <XXX@1iVe .com>“
gpg: key F2FE7008B02578B4: “Rainshaw <xXX&1ive.com>“ 1 new
signature
gpg: key F2FE7008B02578B4: “Rainshaw <xXX&1ive.com>“ 1 new
subkey
gpg: key F2FE7008B02578B4: secret key imported
gpg: Total number processed: 1
gpPg: new subkeys: 1
gpPg: new signatures: 1
gpPg: secret keys read: 1
gpPg: secret keys imported: 1
gpg: “secret keys unchanged: 1
此 时 你 皋 $ 钢 的 密 码 和 子 密 钥 的 密 码 是 不 同 的 , 我 们 能 够 很 好
的 保 护 主 密 钥 的 同 时 , 减 少 我 们 日 常 使 用 时 的 麻 烦 。
如 果 有 TPM 芯 片 可 以 在 –edit-key 时 , 使 用 keytotpm 命 令 , 将 密 钢
转 移 到 TPM 芯 片 上 , 博 主 未 尝 试 , 请 自 行 测 试 。 如 果 有 智 能 卡 设 备 如
YubiKey , 则 可 以 使 用 keytocard 命 令 。
常 见 问 题 与 解 答
是 香 应 该 上 传 自 己 的 公 钥 到 公 钥 服 务 器 上 ?
根 据 博 主 uiyc 的 储 客 , 不 推 荐 将 公 钥 上 传 到 公 钥 服 务 器 上 , 除 非
你 真 的 需 要 。 该 博 主 的 博 客 里 列 举 了 公 钢 服 务 器 的 诺 多 问 意 , 如
滥 用 、 投 毒 “ 签 名 Dos、 熬 破 、 隐 私 问 题 。
知 何 公 布 自 品 鸥 公 钥 ?
我 们 应 该 多 逐 径 、 分 散 的 公 开 自 己 的 公 钥 , 并 在 信 任 公 钥 时 先 确
是 否 应 该 上 传 自 己 的 公 钥 到 公 钥 服 务 器 上 ?
根 据 博 主 ulyc 的 博 客 , 不 推 荐 将 公 钥 上 传 到 公 钥 服 务 器 上 , 除 非
你 真 的 需 要 。 该 博 主 的 博 客 里 列 举 了 公 钥 服 务 器 的 诸 多 问 题 , 如
滥 用 、 投 毒 、 签 名 Dos、 爆 破 、 隐 私 问 题 。
如 何 公 布 自 己 的 公 钥 ?
我 们 应 该 多 途 径 、 分 散 的 公 开 自 己 的 公 钥 , 并 在 信 任 公 钥 时 先 确 _
认 指 纹 是 否 正 确 。 你 可 以 将 公 钥 发 布 到 GitHub、 个 人 博 客 、 社 交
软 件 、 公 开 论 坛 中 。
补 充
使 用 PGP 为 git commit 签 名
打 开 终 端 , 运 行
$ gpg -K –keyid-format=Long
/Users/hubot/ .gnupg/secring.gpg
SeC 4096R/3RRA5C34371567BD2 10 March 2016 [C]
uiQd Hubot
SSD 4096R/42B317FD4BR89B7A 2016-03-~10 【[8 ]
找 到 你 要 用 的 GPG 密 钥 ID, 木 园 沥 砂 助
42B317FD4BA89E7A。 然 后 设 置
\( git config --gLlobal user .signingkey 42B317FD4BR897\) git config –gLobal commit .gpgsign true
第 一 行 是 告 诉 Git 用 哪 个 密 钥 进 行 签 名 , 第 二 行 是 告 诉 Git 每 次 commit
的 时 候 眼 动 签 名 , 如 果 不 加 第 二 行 , 在 每 次 commit 时 需 要 增 加 -s 参
云 盅 白 。
[scode type=「“green“] 不 要 忘 了 把 公 钥 上 传 到 GitHub 。 [/scodej]
J-L r 一 一 一 A 山 / 一 一 一 儿
数 才 会 签 名 。
[scode type=「“green“] 不 要 忘 了 把 公 钥 上 传 到 GitHub 。 [/scode]
使 用 PGP 进 行 SSH
[scode type=「“blue「“] 关 于 服 务 端 如 何 启 用 密 钥 登 陆 , 请 自 行 查 找 教
程 , 这 里 只 介 绍 如 何 配 置 本 地 电 脑 。 [/scode]
Win10
CMD
[post url=r“https://labjinkan.org/2021/08/01/using-gpg-for-ssh-
authentication-on-windows-10/“ title=“ 在 Windows 10 上 用 GPG 完 成
SSH 认 证 “ cover=“https://labjinkan.org/wp-content/themes/kagami-
master/assets/images/fallback_coverjpg“ 厂
Git Bash
[scode type=「“blue「“] 网 上 教 程 很 多 , 我 配 置 了 好 几 次 都 没 成 功 , 最 后
按 照 下 面 这 个 步 骤 成 功 了 , 有 很 多 注 意 事 项 。 [/scodej]
[scode type=「“yellow「“] 这 个 教 程 说 不 要 用 CRLF 要 用 LF, 在 Win10 上
你 可 以 用 vscode 来 设 置 换 行 符 , 设 置 的 地 方 在 vscode 的 右 下 角 。
[/scode]
首 先 , 新 建 文 件 -/ .gnupg/gpg.conf 内 容 如 下 , 最 后 不 要 换 行 :
$ cat ~/.gnupg/gpg.conf
use-agent
的 -~/.gnupg/gpg-agent.conf 文 件 , 内 容 如 下 , 同 样 最 后 不 要
行 :
E
$ cat ~/.gnupg/gpg-agent .conf
enable-ssh-support
然 后 创 建 -/ .gqnupg/sshcontrol 文 件 , 内 容 如 下 , 不 要 换 行
\( gpg -K --with-keygrip SeC zSa2048 2019-03-21 _[C] [expires: 2021-03-20 ] 96F33EBA7F4B0F7051D75FC208715AF32191DB135 Keygrip = 90BE08830BC1AAD225BE657AD4FBEBE638B3D8B50C9B uid [uLtimate] Brian BxelbierQd SSbD zSa2048 2019-03-21 _[B] [expires: 2021-03-20 ] Keygrip = 5FA04ARBEBFBC5089B50EDEB43198B4895BCA2136 SSbD Sa2048 2019-~03-21 [R] Keygrip = _ 7710BA0643CC022B92544181FF2EAC2A290CDC0OBH\)
cat ~/.gnupg/sshcontrol
7710BA0643CC022B92544181FF2BRAC2R290CDC0B
然 后 修 改 终 端 配 置 文 件 :
$ cat .bashrCc
export GPG _TTY=\((ttY) export 8SH_AUTH_S0CK=\)
(gpgconf –List-dirs agent-sSsh-socket )
echo UPDATESTARTUPTTY | gpg-connect-agent 1> /dev/nul1l
重 启 终 端 。
然 后 重 启 gpg-agent, 注 意 每 次 修 改 配 置 后 , 都 要 执 行 这 一 步 ( 不 过
一 般 这 种 东 西 配 置 一 次 也 就 够 了 ) 。
$ gpg-connect-agent kil1lagent /bye
OK _ closing connection
$ gpg-connect-agent /bye
gpg-connect-agent: no running gpg-agent - starting “C: \Program
FilLes“(x86) \Gpg4winv . . \GnuPG\binvgpg-agent .exe「
gpg-connect-aqent: waitinq for the aqent _ to come up . . 。 (58 )
$ gpg-connect-agent kil1lagent /bye
OK _ closing connection
$ gpg-connect-agent /bye
gpg-connect-agent: no running gpg-agent - starting “C: \Program
FiLes (x86) \Gpg4winv . . \GnuPG\binvgpg-agent .exe「
gpg-connect-agent: waiting for the agent to come HP .. 。 (58)
gpg-connect-agent: connection to agent established
然 后 检 查 你 的 配 置 是 否 成 功 :
$ SSh-add -L
江 这 里 会 打 印 出 你 的 公 钢
如 果 打 印 出 你 的 公 钥 , 如 果 没 有 输 出 说 明 还 没 有 配 置 好 , 如 你 确 定 是 按
照 本 教 程 一 步 步 做 的 , 那 可 能 本 教 程 已 过 时 , 请 再 搜 寻 。
将 公 钥 传 递 到 服 务 器 端 便 可 使 用 GPG 认 证 密 钥 进 行 SSH 登 陆 了 !
Linux( 以 Ubuntu 为 例 )
F 然 后 启 用 gpg-agent 接 替 ssh-agent 处 理 SSH
侥 水 .
cat enable-ssh-support » ~/ .gnupg/gpg-agent .conf
然 后 指 定 我 们 要 使 用 的 密 钥 :
$ gpg -K –with-keygrip
SeC zSa2048 21 March 2019 [C] [expires: 20 March 2021 ]
96F33EBA7F4B0F7051D75FC208715AF32191DB135
Keygrip = 90BE08830BC1AAD225BE657AD4FBEBE638B3D8B50C9B
uid [uLtimate] Brian Bxelbierd
SSbD zSa2048 21 March 2019 _[B] [expires: 20 March 2021 ]
Keygrip = 5FA04ARBEBFBC5089B50EDEB43198B4895BCA2136
SSbD Sa2048 2019-~03-21 _[R]
卯 扬 NOIRIAA 伟 厂 弓 日 grag pe 芒 bone 兄 58
请 求 :
cat enable-ssh-support » ~/ .gnupg/gpg-agent .conf
然 后 指 定 我 们 要 使 用 的 密 钥 :
$ gpg -K –with-keygrip
SeC zSa2048 21 March 2019 [C] [expires: 20 March 2021 ]
96F33EBA7F4B0F7051D75FC208715AF32191DB135
Keygrip = 90BE08830BC1AAD225BE657AD4FBEBE638B3D8B50C9B
uid [uLtimate] Brian Bxelbierd
SSbD zSa2048 21 March 2019 _[B] [expires: 20 March 2021 ]
Keygrip = 5FA04ARBEBFBC5089B50EDEB43198B4895BCA2136
SSbD Sa2048 2019-~03-21 [R]
Keygrip = _ 7710BA0643CC022B92544181FF2EAC2A290CDC0OBH
$ echo 7710BA0643CC022B92544181FF2BRC2R290CDC0B »
~/.gnupg/sshcontrol
注 意 替 换 上 面 的 7710BA0643cC022B92544181FF2EAC2A290cpCc0E 为 你
所 要 用 的 。 然 后 我 们 修 改 默 认 的 SSH 工 具 :
$ cat ~/ .bashrc
export 8SH_AUTH_S0CK=$(gpgconf –List-dirs agent-ssh-socket )
gpgconf –Launch gpg-agent
人 育 这 两 行 加 入 到 你 的 终 端 配 置 文 件 中 , 接 下 来 你 需 要 重 启 终 端 才
能 生 交
此 时 你 可 以 检 查 你 的 配 置 是 否 正 确 :
$ SSh-add -L
江 这 里 会 打 印 出 你 的 公 钢
人 怀 上 厂 Ja 一 T A m ul ZC 一 JL r 一 足 一 v 人 J / 一 一 一 门 Dv nu
Keygrip = 7710BA0643CC022B92544181FF2EAC2A290CDC0OE
$ echo 7710BA0643CC022B92544181FF2BRC2R290CDC0B »
~/.gnupg/sshcontrol
注 意 替 换 上 面 的 7710BA0643cC022B92544181FF2EAC2A290cpCc0E 为 你
所 要 用 的 。 然 后 我 们 修 改 默 认 的 SSH 工 具 :
$ cat ~/ .bashrc
export 8SH_AUTH_S0CK=$(gpgconf –List-dirs agent-ssh-socket )
gpgconf –Launch gpg-agent
1 这 两 行 加 入 到 你 的 终 端 配 置 文 件 中 , 接 下 来 你 需 要 重 启 终 端 才
能 生 效 。
此 时 你 可 以 检 查 你 的 配 置 是 否 正 确 :
$ SSh-add -L
江 这 里 会 打 印 出 你 的 公 钢
将 公 钥 传 递 到 服 务 器 端 便 可 使 用 GPG 认 证 密 钥 进 行 SSH 登 陆 了 !
清 理 PGP 密 码 缓 存
Linux:
$ gpgconf –kil11 gpg-agent
Windows:
$ echo “RELOADAGENT“ | gpg-connect-agent