OpenSSL工具使用

首先得安装OpenSSL软件包openssl,安装了这个软件包之后,我们可以做这些事情:

  • Creation of RSA, DH and DSA Key Parameters # 创建密钥 key
  • Creation of X.509 Certificates, CSRs and CRLs # 创建证书
  • Calculation of Message Digests # 计算消息摘要
  • Encryption and Decryption with Ciphers # 加密、解密
  • SSL/TLS Client and Server Tests # SSL 服务器端/客户端测试
  • Handling of S/MIME signed or encrypted Mail # 处理签名或加密了的邮件

计算文件摘要

1
2
3
4
5
6
touch abc # 创建文件
vi abc # 输入一些内容
openssl md5 abc
openssl sha1 abc # 其他方法 sha1sum abc
openssl sha256 abc
openssl dgst -sha256 abc

生成公私钥

1
2
3
4
# openssl genrsa [-out filename] [-passout arg] [-des] [-des3] [-idea] [-f4] [-3] [-rand file(s)] [-engine id] [numbits]
openssl genrsa -out prikey.pem 2048 # -des|-des3|-idea:不同的加密算法,numbits:指定生成私钥的大小,默认是2048
openssl rsa -in prikey.pem -des3 -out prikey_des3.pem # 补充进行des3加密 输入密码
openssl rsa -in prikey_des3.pem -pubout -out des3_pub.pem # 输入密码生成公钥

对文件签名

签名就是要保证接收者知道这个文件是我发出的。
数字签名的过程是计算出摘要信息,然后使用私钥对摘要信息进行加密得到数字签名。校验端:公钥对数字摘要进行解密对比

1
2
openssl dgst -sha256 -out abc.sig -sign prikey.pem -keyform PEM abc # 生成签名,使用sha256摘要,通过gensa,pri私钥 对abc文件进行签名
openssl dgst -sha256 -keyform PEM -verify des3_pub.pem -signature abc.sig abc # 验证签名,其实就是使用公钥再对原文件的摘要进行签名,与之前的签名文件进行对比,如果一样,验证成功

命令详解

rsautl

本指令能够使用RSA算法签名,验证身份,加密/解密数据

1
2
3
4
openssl rsautl [-in file] [-out file] [-inkey file] [-passin arg] [-keyform PEM|DER|NET] [-pubin] [-certin]
[-asn1parse] [-hexdump] [-raw] [-oaep] [-ssl] [-pkcs] [-x931] [-sign] [-verify][-encrypt] [-decrypt] [-rev]
[-engine e]
man rsault # 查看说明

生成公私钥转格式例子

1
2
3
openssl genrsa -out rsa_private.pem 2048;
openssl rsa -in rsa_private.pem -out rsa_private.der -outform der
openssl rsa -in rsa_private.der -inform der -out pub.pem -outform PEM -pubout

编码 (也用于扩展名)
.DER = 扩展名DER用于二进制DER编码的证书。这些证书也可以用CER或者CRT作为扩展名.
.PEM = 扩展名PEM用于ASCII(Base64)编码的各种X.509 v3 证书。文件开始由一行”—– BEGIN …”开始。

der类型的不用在编解码,直接就是二进制的数据可以直接使用
pem类型的数据要根据base64编解码后,得到的数据需要进行增加或裁剪特殊字符-\n\rBEGIN信息、END信息等

参考