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: 以文本方式打印密钥信息
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。