什么是OpenSSL?
OpenSSL是用于安全通信的著名开源密码学工具包,包括主要的密码算法、常见密码和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。
官方源下载地址: https://www.openssl.org/source/
OpenSSL特征:
1. SSL客户端和服务端特征2. 美国联邦政府NIST FIPS 140-2一级评估确认
3. TLS,下一代SSL协议
4. X.509密钥和证书的生成
5. X.509证书权力
6. S/MIME加密
7. 文件加密和粉碎
8. 打乱UNIX密码
9. 9个不同的商业密码硬件设备
10. 密码性能测试
11. 36个命令
12. 6个消息摘要算法
13. 9个密码算法
14. 多个加密协议
1. Openssl更多描述
OpenSSL有两种运行模式:交互模式和批处理模式。
直接输入openssl回车进入交互模式,输入带命令选项的openssl进入批处理模式。
对称加密算法
OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4
。这7种分组加密算法分别是AES
、DES
、Blowfish
、CAST
、IDEA
、RC2
、RC5
,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。
非对称加密算法
OpenSSL一共实现了4种非对称加密算法,包括DH
算法、RSA
算法、DSA
算法和椭圆曲线算法(EC
)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。
信息摘要算法
OpenSSL实现了5种信息摘要算法,分别是MD2
、MD5
、MDC2
、SHA(SHA1)
和RIPEMD
。SHA算法事实上包括了SHA和SHA1两种信息摘要算法,此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS
和DSS1
。
密钥和证书管理
密钥和证书管理是PKI的一个重要组成部分,OpenSSL为之提供了丰富的功能,支持多种标准。
首先,OpenSSL实现了
ASN.1
的证书和密钥相关标准,提供了对证书、公钥、私钥、证书请求以及CRL
等数据对象的DER
、PEM
和BASE64
的编解码功能。OpenSSL提供了产生各种公开密钥对和对称密钥的方法、函数和应用程序,同时提供了对公钥和私钥的DER编解码功能。并实现了私钥的PKCS#12
和PKCS#8
的编解码功能。OpenSSL在标准中提供了对私钥的加密保护功能,使得密钥可以安全地进行存储和分发。
在此基础上,OpenSSL实现了对证书的X.509标准编解码、PKCS#12格式的编解码以及PKCS#7的编解码功能。并提供了一种文本数据库,支持证书的管理功能,包括证书密钥产生、请求产生、证书签发、吊销和验证等功能。
事实上,OpenSSL提供的CA应用程序就是一个小型的证书管理中心(CA),实现了证书签发的整个流程和证书管理的大部分机制。
2. Windows直接下载安装
请下载版本1.1.1系列,这个是最新的稳定版本,这也是openssl长期支持(LTS)的版本。
OpenSSL
官网没有提供windows版本的安装包,可以选择其他开源平台提供的工具。
一般在安装openssl之前还需要Visual Studio
的一些插件,该地址中也提供了相关插件的下载。如下图即为Openssl的安装及其Visual Studio插件在下载网页的截图。
安装步骤和使用方法如下:
1. 选择32位或者64位合适的版本下载,例如Win64OpenSSL_Light-1_0_2h.exe
2. 设置环境变量,例如工具安装在C:\OpenSSL-Win64,则将C:\OpenSSL-Win64\bin;复制到Path中
3. 打开命令行程序cmd(以管理员身份运行),进入2_www.domain.com.key、1_www.domain.com_cert.crt所在目录,运行以下命令·
openssl pkcs12 -export -out www.domain.com.pfx -inkey 2_www.domain.com.key -in 1_www.domain.com_cert.crt
例如key和crt文件保存在 D:\ ,运行情况如下: