文章目录
1. 安装gpg工具
apt-get install gnupg2
2.生成秘钥对
gpg --full-generate-key
3.查看生成秘钥
gpg --list-secret-keys --keyid-format=long
sec rsa4096/8715034D083B404F 2025-01-22 [SC]
6D0BE4256B845CB59883381D8715034D083B404F
uid [ultimate] sparkwalk (none) <sparkwalk@gmail.com>
ssb rsa4096/4EAD8D5C701EEDF3 2025-01-22 [E]
- sec: 表示私钥(Secret Key)。
- uid: 是你的用户信息。
- ssb: 是子密钥(Subkey)
8715034D083B404F是密钥的长ID,加解密时可以用来指定密钥
4.导出公钥
gpg --armor --export sparkwalk@gmail.com > public_key.asc
- armor: 表示以文本格式导出
- your.email@example.com: 是在生成密钥时输入的邮箱地址
5.导出私钥
gpg --armor --export-secret-keys sparkwalk@gmail.com > private_key.asc
6.使用密钥
1. 加密文件
gpg --encrypt --recipient your.email@example.com file.txt
生成的加密文件为 file.txt.gpg
2. 解密文件
gpg --decrypt file.txt.gpg > file.txt
3. 签名文件
gpg --sign file.txt
4. 验证签名
gpg --verify file.txt.gpg
7. 删除密钥对
# 删除公钥
gpg --delete-key your.email@example.com
# 删除私钥
gpg --delete-secret-key your.email@example.com
# 删除公钥和私钥
gpg --delete-secret-and-public-keys your.email@example.com
8.使用指定秘钥签名
- 查看可用密钥
在签名之前,先确认你有哪些可用的密钥对。运行以下命令:
gpg --list-secret-keys --keyid-format=long
输出示例:
sec rsa4096/ABCDEF1234567890 2024-01-01 [SC]
1234567890ABCDEF1234567890ABCDEF
uid [ultimate] Your Name <your.email@example.com>
ssb rsa4096/0987654321098765 2024-01-01 [E]
- sec: 表示私钥(Secret Key)。
- uid: 是你的用户信息。
- ABCDEF1234567890: 是密钥的长ID,可以用来指定密钥
- 使用指定密钥签名文件
假设你想使用某个特定的密钥(例如 ABCDEF1234567890 )对文件进行签名,可以通过以下命令:
gpg --local-user ABCDEF1234567890 --sign file.txt
- ABCDEF1234567890: 是密钥的长ID。
- file.txt: 是需要签名的文件。
- 签名后的文件会生成为: file.txt.gpg
- 使用指定密钥签名文件并生成分离签名
如果你希望生成一个独立的签名文件(而不是将签名嵌入到原文件中),可以使用–detach-sign参数:
gpg --local-user ABCDEF1234567890 --detach-sign file.txt
这会生成一个名为file.txt.sig
的独立签名文件。
- 验证签名
签名完成后,接收方可以使用以下命令验证签名:
对于嵌入签名的文件:
gpg --verify file.txt.gpg
对于分离签名的文件:
gpg --verify file.txt.sig file.txt
- 使用密钥的邮箱地址指定密钥
如果你不想使用密钥 ID,也可以直接使用密钥的邮箱地址来指定密钥。例如:
gpg --local-user your.email@example.com --sign file.txt
这种方式更直观,尤其是当你有多个密钥时。
9.生成一个包含明文内容和Base64编码签名
- 使用
--clearsign
参数签名文件假设你有一个文件file.txt
,你可以使用以下命令生成一个包含明文内容和Base64签名的文件:
gpg --clearsign --local-user <your-key-id> file.txt
- –clearsign :表示生成明文签名文件
- –local-user
:指定使用哪个密钥进行签名(可以是密钥的长ID或邮箱地址)。 - file.txt :需要签名的文件。
执行后,GPG会生成一个名为 file.txt.asc 的文件,其中包含原始文件的明文内容和Base64编码的签名
- 查看生成的签名文件
打开生成的 file.txt.asc 文件,你会看到类似以下内容:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
这是文件的原始内容。签名后,内容仍然可以被阅读。
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQEcBAABAgAGBQJdX123AAoJEBh3456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567
10.导入公/私钥
如果你从他人那里获取了一个公/私钥文件(通常是 .asc 或 .gpg 文件),可以通过以下命令导入:
gpg --import public_key.asc
- 导入密钥时指定信任级别
在导入公钥后,你可能需要设置对该密钥的信任级别。这可以通过以下命令完成:
编辑密钥信任
“`shell
gpg –edit-key <key-id>
“`是密钥的短 ID 或长 ID。 -
在编辑模式下,输入
trust
,然后按提示设置信任级别:- 1 :不信任
-
2 :边缘信任
-
3 :完全信任
-
4 :最终信任(通常用于自己的密钥)
- 完成后输入
save
保存并退出。
- 完成后输入
- 验证导入的密钥
导入密钥后,建议验证密钥的指纹,确保导入的密钥是正确的。
查看密钥指纹
“`shell
gpg –fingerprint <key-id>
“`- 比对输出的指纹与原始密钥的指纹是否一致。
11. 修改默认路径
在使用 GPG(GNU Privacy Guard)时,密钥(包括公钥和私钥)通常会被保存在默认的密钥库路径中。GPG 的默认密钥库路径因操作系统而异,但你可以通过命令行查看或修改这些路径。
1. 默认密钥库路径
Linux 和 macOS
默认情况下,GPG 的密钥库位于用户的主目录下的.gnupg
文件夹中:
~/.gnupg/
-
公钥库:
~/.gnupg/pubring.kbx
(GPG 2.x)或~/.gnupg/pubring.gpg
(GPG 1.x) -
私钥库:
~/.gnupg/secring.gpg
(GPG 1.x)或存储在~/.gnupg/
下的其他文件中(GPG 2.x)
- 查看当前密钥库路径下的秘钥
gpg --list-keys --homedir
12. 导入到指定目录下
gpg --homedir /path/to/new/gnupg --import public_key.asc
- –homedir: 指定密钥库的路径