GnuPG学习笔记
本文最后更新于 1117 天前,其中的信息可能已经有所发展或是发生改变。

前言

GNU Privacy Guard(GnuPG或GPG)是一个密码学软件,用于加密、签名通信内容及管理非对称密码学的密钥。GnuPG是自由软件,遵循IETF订定的OpenPGP技术标准设计,并与PGP保持兼容。

安装

sudo apt install gpg -y

生成密钥对

ubuntu@ubuntu:~$ gpg --full-gen-key
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 WARRANTY, to the extent permitted by law.

请选择您要使用的密钥类型:
   (1) RSA 和 RSA (默认)
   (2) DSA 和 Elgamal
   (3) DSA(仅用于签名)
   (4) RSA(仅用于签名)
  (14) Existing key from card
您的选择是? 4
# 这里选择4
RSA 密钥的长度应在 1024 位与 4096 位之间。
您想要使用的密钥长度?(3072) 4096
请求的密钥长度是 4096 位
# 密钥长度拉满
请设定这个密钥的有效期限。
         0 = 密钥永不过期
      <n>  = 密钥在 n 天后过期
      <n>w = 密钥在 n 周后过期
      <n>m = 密钥在 n 月后过期
      <n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 0
# 这里坑定选择永不过期
密钥永远不会过期
这些内容正确吗? (y/N) y
# 别问 问就是没问题
GnuPG 需要构建用户标识以辨认您的密钥。

真实姓名: test1
电子邮件地址: [email protected]
注释: test1
您选定了此用户标识:
    “test1 (test1) <[email protected]>”

更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)? o
我们需要生成大量的随机字节。在质数生成期间做些其他操作(敲打键盘
、移动鼠标、读写硬盘之类的)将会是一个不错的主意;这会让随机数
发生器有更好的机会获得足够的熵。
gpg: 密钥 7C4A96E3BBC9744C 被标记为绝对信任
gpg: 吊销证书已被存储为‘/home/ubuntu/.gnupg/openpgp-revocs.d/454039FDD30010C960EB66287C4A96E3BBC9744C.rev’
公钥和私钥已经生成并被签名。

请注意这个密钥不能用于加密。您可能想要使用“--edit-key”命令来
生成一个用于此用途的子密钥。
pub   rsa4096 2021-08-29 [SC]
      454039FDD30010C960EB66287C4A96E3BBC9744C
uid                      test1 (test1) <[email protected]>
通过上面的操作,生成了一个名为test1,使用RSA加密 且永不过期的账户
454039FDD30010C960EB66287C4A96E3BBC9744C为密钥id

创建子密钥

我认为主密钥应仅用于管理子密钥,子密钥用来加密解密签名操作

首先看一下我们刚刚创建的密钥

ubuntu@ubuntu:~$ gpg -K
# k为小写时列出公钥 k为大写时列出私钥
/home/ubuntu/.gnupg/pubring.kbx
-----------------------------
sec   rsa4096 2021-08-29 [SC]
      454039FDD30010C960EB66287C4A96E3BBC9744C
uid           [ 绝对 ] test1 (test1) <[email protected]>
OptionDescription
uid拥有者信息,姓名和邮箱
pubpublic key 公钥
subpublic subkey 子公钥
secsecret key 私钥
ssbsecret subkey 子私钥
Ssign 表示可以用来签名
CCertify 表示可以用于认证其他密钥
EEncrypt 表示可以用来加密
AAuthentication 表示可以用来认证

创建两个子密钥 一个用来加密 一个用来签名

ubuntu@ubuntu:~$ gpg --edit-key test1
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 WARRANTY, to the extent permitted by law.

私钥可用。

sec  rsa4096/7C4A96E3BBC9744C
     创建于:2021-08-29  有效至:永不       可用于:SC  
     信任度:绝对        有效性:绝对
[ 绝对 ] (1). test1 (test1) <[email protected]>

gpg> addkey
# addkey是创建子密钥的意思
请选择您要使用的密钥类型:
   (3) DSA(仅用于签名)
   (4) RSA(仅用于签名)
   (5) ElGamal(仅用于加密)
   (6) RSA(仅用于加密)
  (14) Existing key from card
您的选择是? 4
# 选择4 仅用于签名
RSA 密钥的长度应在 1024 位与 4096 位之间。
您想要使用的密钥长度?(3072) 4096
请求的密钥长度是 4096 位
请设定这个密钥的有效期限。
         0 = 密钥永不过期
      <n>  = 密钥在 n 天后过期
      <n>w = 密钥在 n 周后过期
      <n>m = 密钥在 n 月后过期
      <n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 0
密钥永远不会过期
这些内容正确吗? (y/N) y
真的要创建吗?(y/N) y
我们需要生成大量的随机字节。在质数生成期间做些其他操作(敲打键盘
、移动鼠标、读写硬盘之类的)将会是一个不错的主意;这会让随机数
发生器有更好的机会获得足够的熵。

sec  rsa4096/7C4A96E3BBC9744C
     创建于:2021-08-29  有效至:永不       可用于:SC  
     信任度:绝对        有效性:绝对
ssb  rsa4096/17B455B1D1CF2DC4
     创建于:2021-08-29  有效至:永不       可用于:S   
[ 绝对 ] (1). test1 (test1) <[email protected]>

gpg> addkey
请选择您要使用的密钥类型:
   (3) DSA(仅用于签名)
   (4) RSA(仅用于签名)
   (5) ElGamal(仅用于加密)
   (6) RSA(仅用于加密)
  (14) Existing key from card
您的选择是? 6
# 选择6 仅用于加密
RSA 密钥的长度应在 1024 位与 4096 位之间。
您想要使用的密钥长度?(3072) 4096
请求的密钥长度是 4096 位
请设定这个密钥的有效期限。
         0 = 密钥永不过期
      <n>  = 密钥在 n 天后过期
      <n>w = 密钥在 n 周后过期
      <n>m = 密钥在 n 月后过期
      <n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 0
密钥永远不会过期
这些内容正确吗? (y/N) y
真的要创建吗?(y/N) y
我们需要生成大量的随机字节。在质数生成期间做些其他操作(敲打键盘
、移动鼠标、读写硬盘之类的)将会是一个不错的主意;这会让随机数
发生器有更好的机会获得足够的熵。

sec  rsa4096/7C4A96E3BBC9744C
     创建于:2021-08-29  有效至:永不       可用于:SC  
     信任度:绝对        有效性:绝对
ssb  rsa4096/17B455B1D1CF2DC4
     创建于:2021-08-29  有效至:永不       可用于:S   
ssb  rsa4096/77C63F3A7A718DE9
     创建于:2021-08-29  有效至:永不       可用于:E   
[ 绝对 ] (1). test1 (test1) <[email protected]>

gpg> save
# 一定要记得保存

导出

gpg -o pub.key -a --export test1 # 导出公钥
gpg -o sec.key -a --export-secret-keys test1 # 导出私钥
gpg -o ssb.key -a --export-secret-subkeys test1 # 导出全部子私钥
gpg -o ssb.key -a --export-secret-subkey 私钥id! # 导出单个子私钥 感叹号是必要的
gpg --output revoke.asc --gen-revoke mykey # 导出吊销证书
参数mykey必须是密钥说明符,可以是主密钥对的密钥 ID,也可以是标识密钥对的用户 ID 的任何部分。生成的证书将保留在文件 revoke.asc 中。如果省略--output选项,结果将放在标准输出上。由于证书很短,您可能希望打印证书的硬拷贝以存放在安全的地方,例如您的保险箱。证书不应存储在其他人可以访问的地方,因为任何人都可以发布吊销证书并使相应的公钥无用。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇