首先得安装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 | touch abc # 创建文件 |
生成公私钥
1 | openssl genrsa [-out filename] [-passout arg] [-des] [-des3] [-idea] [-f4] [-3] [-rand file(s)] [-engine id] [numbits] |
对文件签名
签名就是要保证接收者知道这个文件是我发出的。
数字签名的过程是计算出摘要信息,然后使用私钥对摘要信息进行加密得到数字签名。校验端:公钥对数字摘要进行解密对比
1 | openssl dgst -sha256 -out abc.sig -sign prikey.pem -keyform PEM abc # 生成签名,使用sha256摘要,通过gensa,pri私钥 对abc文件进行签名 |
命令详解
rsautl
本指令能够使用RSA算法签名,验证身份,加密/解密数据
1 | openssl rsautl [-in file] [-out file] [-inkey file] [-passin arg] [-keyform PEM|DER|NET] [-pubin] [-certin] |
生成公私钥转格式例子
1 | openssl genrsa -out rsa_private.pem 2048; |
编码 (也用于扩展名)
.DER = 扩展名DER用于二进制DER编码的证书。这些证书也可以用CER或者CRT作为扩展名.
.PEM = 扩展名PEM用于ASCII(Base64)编码的各种X.509 v3 证书。文件开始由一行”—– BEGIN …”开始。
der类型的不用在编解码,直接就是二进制的数据可以直接使用
pem类型的数据要根据base64编解码后,得到的数据需要进行增加或裁剪特殊字符-
、\n
、\r
、BEGIN
信息、END
信息等