gpg用法

作者: 星空星晴 | 来源:发表于2021-11-10 16:54 被阅读0次

    环境:ubuntu-server-20.04.3

    生成密钥

    1,产生密钥对

    key的属性:key name,user id,key id,key fingerprint

    # gpg --key-gen 【快速产生key pair,默认RSA,密钥长度3072,有效期1年】

    # gpg --generate-key【快速产生key pair,默认RSA,密钥长度3072,有效期1年】

    # gpg --full-generate-key 【完整的交互式生成,由用户选择非对称密码算法、长度、有效期等等】

    交互1 密钥生成过程交互2

    查看密钥

    查看公钥

    # gpg -k  

    查看公钥

    # gpg --list-keys

    查看私钥

    # gpg -K

    查看私钥

    # gpg --list-secret-keys

    查看私钥

    删除密钥

    要求先删除私钥,再删除公钥,删除私钥的过程会多次确认。

    # gpg --delete-secret-keys 086A83E4920E558197652B55CEB674AF2FF7EB12

    # gpg --delete-keys 086A83E4920E558197652B55CEB674AF2FF7EB12

    密钥导出及导入

    产生的密钥对(/root/.gnupg/pubring.kbx)以二进制形式储存,armor参数可以将其转换为ASCII码显示。

    导出公钥

    # gpg --armor --export server_rsa_key_for_root > server_rsa_key_for_root.pub

    --armor 简写为 -a,将其转换为ASCII码显示

    可以根据key name、key id、用户id等信息导出。

    导出私钥

    将私钥写入server_rsa_key_for_root.private文件,导出私钥时,需要输入产生密钥时指定的密码短语(用于保护私钥)。
    # gpg -a --export-secret-keys 51E66699474095C81412BE0882F11361EE05E67A > server_rsa_key_for_root.private

    加密

    公钥加密,私钥解密

    # gpg --recipient server_rsa_key_for_root --output demo.en.txt --encrypt demo.txt

    加密

    解密

    # gpg --output demo.de.txt --decrypt demo.en.txt

    --output选项位于中间时不报错,位于命令行参数最后,报错 可以使用重定向操作代替

    私钥解密的过程需要输入密钥保护短语。

    解密

    签名

    私钥签名,公钥验证。

    gpg目前支持三种形式的签名:

    1,内容与签名不分离,二进制形式保存(--sign)

    2,内容与签名不分离,ASCII形式保存(--clearsign)

    3,内容与签名分开存储。(--detach-sign)

    # gpg --sign demo.txt

    运行上面的命令后,当前目录下生成demo.txt.gpg文件,这就是签名后的文件。这个文件默认采用二进制储存,如果想生成ASCII码的签名文件,可以使用clearsign参数。

    签名1

    # gpg --clearsign demo.txt

    运行上面的命令后 ,当前目录下生成demo.txt.asc文件,后缀名asc表示该文件是ASCII码形式的。

    签名2

    3,如果想生成单独的签名文件,与文件内容分开存放,可以使用detach-sign参数。

    # gpg --detach-sign demo.txt

    运行上面的命令后,当前目录下生成一个单独的签名文件demo.txt.sig。该文件是二进制形式的,如果想采用ASCII码形式,要加上armor参数。

    签名

    4,

    # gpg --armor --detach-sign demo.txt

    签名4

    验证

    # gpg --verify demo.txt.asc demo.txt

    # gpg --verify demo.txt.gpg

    签名验证 验证不通过vs验证通过

    同时加密和签名

    用发送者的私钥签名,用接受者的公钥加密。

    gpg --local-user [发送者ID] --recipient [接收者ID] --armor --sign --encrypt demo.txt

    local-user参数指定用发送者的私钥签名

    recipient参数指定用接收者的公钥加密

    armor参数表示采用ASCII码形式显示

    sign参数表示需要签名

    encrypt参数表示指定源文件

    这步操作,需要导入接受者的公钥到发送者机器(发送者要用接受者的公钥加密),同时需要导入发送者的公钥到接收者的机器(接受者要用发送者的公钥验证签名)。

    相关文章

      网友评论

          本文标题:gpg用法

          本文链接:https://www.haomeiwen.com/subject/ukxizltx.html