OpenSSL常用命令快速上手

12次阅读

共计 1223 个字符,预计需要花费 4 分钟才能阅读完成。

OpenSSL 常用命令快速上手
RSA 篇
我们的操作流程为:

生成 RSA 密钥 key.pem(也称私钥,密钥对)。
从 key.pem 中导出公钥 pubkey.pem。
使用公钥 pubkey.pem 对文件 test.txt 进行加密,得到密文 test.enc。
使用私钥 key.pem 对 test.enc 进行解密,得到译文 test.dec。
对比 test.txt 和 test.dec,应该是一样的。
使用 key.pem 对 test.txt 进行签名,得到 test.sig。
使用 pubkey.pem 对 test.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: 以文本方式打印密钥信息

正文完
 0