创建公钥与私钥后, 查看 uid, 然后就可以将公钥上传到 keyserver
以后别人通过 keyserver 知道你的公钥, 他就可以用加密的形式将邮件寄给你
你通过自己的私钥, 可将邮件解密
相反, 如果你要加密寄邮件给别人, 你就需要别人的公钥
他也需要自己的私钥来解密
1. 安装
Ubuntu - $ apt install gnupg2
Fedora - $ dnf install gnupg2
Centos - $ yum install gnupg2
OpenSUSE - $ zypper install python-gnupg
如果安装的是 gnupg 则用命令 gpg,
但安装的是 gnupg2 则用命令 gpg2
$ gpg2 --version
2. 创建
2.1) 主 Key - 关闭签名(sign) 与加密(encrypt) 功能, 留下认证(certify) 功能
Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Sign Certify Encrypt
$ gpg2 --expert --gen-key
选 (8) RSA (set your own capabilities)
选 (S) Toggle the sign capability - 关闭签名
选 (E) Toggle the encrypt capability - 关闭加密
选 (Q) Finished
Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Certify
2.2) 加入 2个副 Keys
Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Sign Encrypt
$ gpg2 --expert --edit-key '<email>'
2.2.1) 关闭签名(sign)功能, 用于加密(encrypt)
gpg> addkey
选 (8) RSA (set your own capabilities)
选 (S) Toggle the sign capability
选 (Q) Finished
Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Encrypt
2.2.2) 关闭加密(encrypt), 用于签名(sign)
gpg> addkey
选 (8) RSA (set your own capabilities)
选 (E) Toggle the encrypt capability
选 (Q) Finished
Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Sign
gpg> save
需要 Name, Email 与密码
3. 列出
pub 4096R/A1B1A71A 2017-01-10 [C]
uid [ultimate] Jason Mun <member@email.com>
sub 4096R/B2B1A71A 2017-01-10 [E]
sub 4096R/C3B1A71A 2017-01-10 [S]
公钥
$ gpg2 -k 或 gpg2 --list-keys
私钥
$ gpg2 -K 或 gpg2 --list-secret-keys
$ gpg2 --list-sigs
$ gpg2 --fingerprint
4. 编辑
建议先输出与备份
尤其是自己的私钥文件 (步骤 8), 以后可以输入回去
$ gpg2 --edit-key <uid / email>
trust: unknown
gpg> trust
gpg> save / quit
延长期限 / 撤子私钥
gpg> key 1
gpg> expire / delkey
gpg> save / quit
5. 撤除 (-o/--output, -a/--armor:一种7位文件)
私钥
$ gpg2 --delete-secret-key <uid>
公钥
$ gpg2 --delete-key <uid>
如果公私钥是一对的, 要先撤了私钥, 再撤公钥
6. 加密与解密 (-u/--local-user [寄件人ID], -r/--recipient [收件人ID],
-a/--armor, -s/--sign,
-e/--encrypt, -d/--decrypt)
a.txt >> a.txt.encrypt
$ gpg2 -r <uid> -o a.txt.encrypt -e a.txt
a.txt.encrypt >> a.txt
$ gpg2 -o a.txt -d a.txt.encrypt
7. keyserver - 公钥搜索 / 上传 / 下载 / 吊销
搜索
$ gpg2 --keyserver keyserver.ubuntu.com --search-keys <uid / email>
$ gpg2 --keyserver keys.gnupg.net --search-keys <uid / email>
上传
$ gpg2 --keyserver keyserver.ubuntu.com --send-keys <uid>
$ gpg2 --keyserver keys.gnupg.net --send-keys <uid>
下载
$ gpg2 --keyserver keyserver.ubuntu.com --recv-keys <uid>
$ gpg2 --keyserver keys.gnupg.net --recv-keys <uid>
回收在 keyserver 的公钥需先生成吊销文件, 然后输入再上传
$ gpg2 -o revoke.asc --gen-revoke <uid>
$ gpg2 --import revoke.asc
$ gpg2 --keyserver keys.gnupg.net --send-keys <uid>
8. 输入与输出
2.2) 加入 2个副 Keys
Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Sign Encrypt
$ gpg2 --expert --edit-key '<email>'
2.2.1) 关闭签名(sign)功能, 用于加密(encrypt)
gpg> addkey
选 (8) RSA (set your own capabilities)
选 (S) Toggle the sign capability
选 (Q) Finished
Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Encrypt
2.2.2) 关闭加密(encrypt), 用于签名(sign)
gpg> addkey
选 (8) RSA (set your own capabilities)
选 (E) Toggle the encrypt capability
选 (Q) Finished
Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Sign
gpg> save
需要 Name, Email 与密码
3. 列出
pub 4096R/A1B1A71A 2017-01-10 [C]
uid [ultimate] Jason Mun <member@email.com>
sub 4096R/B2B1A71A 2017-01-10 [E]
sub 4096R/C3B1A71A 2017-01-10 [S]
公钥
$ gpg2 -k 或 gpg2 --list-keys
私钥
$ gpg2 -K 或 gpg2 --list-secret-keys
$ gpg2 --list-sigs
$ gpg2 --fingerprint
4. 编辑
建议先输出与备份
尤其是自己的私钥文件 (步骤 8), 以后可以输入回去
$ gpg2 --edit-key <uid / email>
trust: unknown
gpg> trust
gpg> save / quit
延长期限 / 撤子私钥
gpg> key 1
gpg> expire / delkey
gpg> save / quit
5. 撤除 (-o/--output, -a/--armor:一种7位文件)
私钥
$ gpg2 --delete-secret-key <uid>
公钥
$ gpg2 --delete-key <uid>
如果公私钥是一对的, 要先撤了私钥, 再撤公钥
6. 加密与解密 (-u/--local-user [寄件人ID], -r/--recipient [收件人ID],
-a/--armor, -s/--sign,
-e/--encrypt, -d/--decrypt)
a.txt >> a.txt.encrypt
$ gpg2 -r <uid> -o a.txt.encrypt -e a.txt
a.txt.encrypt >> a.txt
$ gpg2 -o a.txt -d a.txt.encrypt
7. keyserver - 公钥搜索 / 上传 / 下载 / 吊销
搜索
$ gpg2 --keyserver keyserver.ubuntu.com --search-keys <uid / email>
$ gpg2 --keyserver keys.gnupg.net --search-keys <uid / email>
上传
$ gpg2 --keyserver keyserver.ubuntu.com --send-keys <uid>
$ gpg2 --keyserver keys.gnupg.net --send-keys <uid>
下载
$ gpg2 --keyserver keyserver.ubuntu.com --recv-keys <uid>
$ gpg2 --keyserver keys.gnupg.net --recv-keys <uid>
回收在 keyserver 的公钥需先生成吊销文件, 然后输入再上传
$ gpg2 -o revoke.asc --gen-revoke <uid>
$ gpg2 --import revoke.asc
$ gpg2 --keyserver keys.gnupg.net --send-keys <uid>
8. 输入与输出
输入
$ gpg2 --import <公钥或私钥文件名>
$ gpg2 --import <公钥或私钥文件名>
输出
$ gpg2 -a -o 公钥.asc --export <uid>
$ gpg2 -a -o 所有公钥.asc --export
$ gpg2 -a -o 所有私钥.asc --export-secret-keys
$ gpg2 -a -o 私钥.asc --export-secret-keys '<email>'
$ gpg2 -a -o 子私钥.asc --export-secret-subkeys <uid>
9. 数字签名
会生成一个 asc 签名文件 (不包含原文件内容)
$ gpg2 -ab <文件名>
$ gpg2 --verify <文件名.asc>
会生成一个 asc 签名文件 (包含原文件内容), 内容 / 签名可以分离出来
$ gpg2 -a -o <文件名.txt.asc> --clearsign <文件名>
$ gpg2 --verify <文件名.txt.asc>
分离内容
$ gpg2 -o <文件名2.txt> -d <文件名.txt.asc>
分离签名
$ gpg2 -a -o <文件名2.asc> --detach-sign <文件名.txt.asc>
$ gpg2 -a -o 公钥.asc --export <uid>
$ gpg2 -a -o 所有公钥.asc --export
$ gpg2 -a -o 所有私钥.asc --export-secret-keys
$ gpg2 -a -o 私钥.asc --export-secret-keys '<email>'
$ gpg2 -a -o 子私钥.asc --export-secret-subkeys <uid>
9. 数字签名
会生成一个 asc 签名文件 (不包含原文件内容)
$ gpg2 -ab <文件名>
$ gpg2 --verify <文件名.asc>
会生成一个 asc 签名文件 (包含原文件内容), 内容 / 签名可以分离出来
$ gpg2 -a -o <文件名.txt.asc> --clearsign <文件名>
$ gpg2 --verify <文件名.txt.asc>
分离内容
$ gpg2 -o <文件名2.txt> -d <文件名.txt.asc>
分离签名
$ gpg2 -a -o <文件名2.asc> --detach-sign <文件名.txt.asc>
没有评论:
发表评论