OpenSSL常用命令快速上手

服务器

浏览数:233

2019-2-2

RSA篇

我们的操作流程为:

  1. 生成RSA密钥key.pem(也称私钥,密钥对)。
  2. key.pem中导出公钥pubkey.pem
  3. 使用公钥pubkey.pem对文件test.txt进行加密,得到密文test.enc
  4. 使用私钥key.pemtest.enc进行解密,得到译文test.dec
  5. 对比test.txttest.dec,应该是一样的。
  6. 使用key.pemtest.txt进行签名,得到test.sig
  7. 使用pubkey.pemtest.txt的签名test.sig进行验签。
key.pem               ====导出=====> pubkey.pem
pubkey.pem + text.txt ===公钥加密===> test.enc
key.pem    + test.enc ===私钥解密===> test.dec

key.pem    + test.txt ===私钥签名===> test.sig
pubkey.pem + test.txt + test.sig ==> 验证签名

命令如下:

1. 生成密钥对并导出公钥

# 生成密钥对
openssl genrsa -out key.pem

# 导出公钥
openssl rsa -in key.pem -pubout -out pubkey.pem

参数说明:

  • -out: 指定输出的文件
  • -in: 指定输入的文件
  • -pubout: 指定输出公钥。如果不加该参数,默认输出的为私钥

2. 加解密操作

# 生成一个待加密的测试文件
echo "hello, world" > test.txt
# 公钥加密
openssl rsautl -encrypt -pubin -inkey pubkey.pem -in test.txt -out test.enc
openssl rsautl -decrypt -inkey key.pem -in test.enc -out test.dec

参数说明:

  • -encrypt: 加密操作
  • -decrypt: 解密操作
  • -pubin: 指定输入公钥。如果不加该参数,则认为输入的为私钥
  • -inkey: 密钥文件

核对文件

# 如果没有任何输出,则文件相同
cmp test.txt test.dec

3. 签名、验签

# 签名
openssl dgst -sign key.pem -sha256 -out test.sig test.txt
# 验签
openssl dgst -verify pubkey.pem -sha256 -signature test.sig test.txt

参数说明:

  • -sign: 使用私钥签名
  • -verify: 使用公钥验签
  • -sha256: 摘要算法,也可以为md5/sha1/sha384/sha512等,签名验签使用的摘要算法应相同
  • -signature: 待验证的签名文件

4. 查看密钥信息

# 查看私钥信息
openssl rsa -in key.pem -noout -text

# 查看公钥信息
openssl rsa -pubin -in pubkey.pem -noout -text

参数说明:

  • -noout: 不打印密钥数据
  • -text: 以文本方式打印密钥信息

原文地址:https://segmentfault.com/a/1190000018084284