GnuPG是一个复杂的密钥管理系统,可以对数据进行安全签名或加密。GPG是一个用于创建和操作GnuPG密钥的命令行工具。
GnuPG最广泛地用于拥有任何交互式身份验证手段或者免密登陆的SSH (Secure Shell)连接,这显著提高了远程连接的安全级别。
以下章节描述了创建、使用和维护GnuPG密钥安全性的方法。
Section 16.1: 导出公钥
为了让你的公私钥对发挥作用,你需要把你的公钥共享给其他人使用。请确保您在这里使用的是您的公钥,因为您永远不应该共享您的私钥。你可以使用以下命令导出公钥:
[demouser@vbox ~]$ gpg --armor --export aya234@163.com > public_key.asc
其中EMAIL_ADDRESS记得修改为你关联的电子邮件地址。
您也可以将您的公钥上传到公钥服务器,以便其他人可以使用它。
在终端中输入以下命令:
[demouser@vbox ~]$ gpg --list-keys
gpg: 正在检查信任度数据库
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u
gpg: 下次信任度数据库检查将于 2027-11-05 进行
[keyboxd]
---------
pub ed***** 2024-11-05 [SC] [有效至:2027-11-05]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
uid [ 绝对 ] username <username@domain.com>
sub cv***** 2024-11-05 [E] [有效至:2027-11-05]
接下来,搜索与要导出的密钥相关联的8位数字字符串(主ID)。私钥文件在~/.gnupg/private-keys-v1.d路径中。执行命令:
gpg —send-keys PRIMARY_ID
其中PRIMARY_ID是该键的实际ID。现在,公钥已经上传到密钥服务器,并且可以公开使用。
Section 16.2: 快速创建和使用GnuPG密钥
安装haveged(例如sudo apt-get Install haveged (非必须))以加速随机字节处理。然后执行gpg --gen-key创建公私钥对,过程有提示需要用户名和密码:
[demouser@vbox ~]$ gpg --gen-key
gpg (GnuPG) 2.4.5; Copyright (C) 2024 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
gpg: 目录‘/home/demouser/.gnupg’已创建
注意:使用 “gpg --full-generate-key” 以获得一个全功能的密钥生成对话框。
GnuPG 需要构建用户标识以辨认您的密钥。
真实姓名: username
电子邮件地址: username@domain.com
您选定了此用户标识:
“username <username@domain.com>”
更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)? o
我们需要生成大量的随机字节。在质数生成期间做些其他操作(敲打键盘
、移动鼠标、读写硬盘之类的)将会是一个不错的主意;这会让随机数
发生器有更好的机会获得足够的熵。
我们需要生成大量的随机字节。在质数生成期间做些其他操作(敲打键盘
、移动鼠标、读写硬盘之类的)将会是一个不错的主意;这会让随机数
发生器有更好的机会获得足够的熵。
gpg: /home/demouser/.gnupg/trustdb.gpg:建立了信任度数据库
gpg: 目录‘/home/demouser/.gnupg/openpgp-revocs.d’已创建
gpg: 吊销证书已被存储为‘/home/demouser/.gnupg/openpgp-revocs.d/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.rev’
公钥和私钥已经生成并被签名。
pub ed***** 2024-11-05 [SC] [有效至:2027-11-05]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
uid username <username@domain.com>
sub cv***** 2024-11-05 [E] [有效至:2027-11-05]
执行gpg --list-keys查看结果
[demouser@vbox ~]$ gpg --list-keys
gpg: 正在检查信任度数据库
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u
gpg: 下次信任度数据库检查将于 2027-11-05 进行
[keyboxd]
---------
pub ed***** 2024-11-05 [SC] [有效至:2027-11-05]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
uid [ 绝对 ] username <username@domain.com>
sub cv***** 2024-11-05 [E] [有效至:2027-11-05]
将公钥发布至服务器
gpg --keyserver pgp.mit.edu --send-keys NNNNNNNN