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 # 处理签名或加密了的邮件

SSLl是一种国际标准的加密及身份认证通信协议,您用的浏览器就支持此协议。
SSH 只是加密的shell,最初是用来替代telnet的。ssh的英文全称是Secure Shell。
OpenSSL 一个C语言函数库,是对SSL协议的实现。openssl 中也有个叫做 openssl 的工具,是 openssl 中的库的命令行接口。openssl version
OpenSSH 是对SSH协议的实现。openssh依赖于openssl,没有openssl的话openssh就编译不过去,也运行不了。ssh -V
HTTPS可以使用TLS或者SSL协议,而openssl是TLS、SSL协议的开源实现,提供开发库和命令行程序。
Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(command interpreter,命令解析器)。
Bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。早在UNIX年代,发展者众多,所以由于shell依据发展者的不同就有许多版本,比如sh,C SHell,K SHell,还有TCSH等,每一种Shell都各有特点。bash这个shell是Bourne Shell的增强版本,也是基于GNU的架构下发展出来的。

计算文件摘要

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信息等

参考