OpenSSL之五:OpenSSL的目录结构、功能和应用
OpenSSL的目录结构、功能和应用
OpenSSL由Eric A.Young和Time J.Hudson自1995年开始编写,1998年由OpenSSL项目组接管。目前最新稳定版本为1.1.1系列,也是长期支持(LTS)版本,支持至2023年9月11日。我们可以到官网https://www.openssl.org/source/ 下载,可用于商业和非商业项目。
OpenSSL支持Linux、Windows、BSD、Mac、VMS、Android、iOS等平台,OpenSSL具有广泛的的适用性。
OpenSSL与其他密码算法开发包:
密码算法开发包 | 开发语言 | 支持平台 | 开源 | 描述 |
---|---|---|---|---|
OpenSSL | C | Linux、Unix、Windows、MacOS等 | 开源 | 跨平台能力强,支持SSL、TLS、**和证书管理等 |
CryptoAPI | C++ | Windows | 非开源 | 由Microsoft提供,支持SSL、TLS及PCT,它适用密码支持组件(CSP)提供底层加密操作;跨平台能力弱。 |
Crypto++ | C++ | Linux、Windows等 | 开源 | 指提供密码算法的实现 |
JSSE | Java | Linux、Windows等 | 开源 | 与OpenSSL几乎相当的功能 |
OpenSSL目录结构
为了说明OpenSSL的目录结构,这里选取了openssl-1.1.1b的版本。OpenSSL软件包三个主要功能部分:密码算法库、SSL协议库及应用程序。当然还有各平台编译目录和文档目录。
- 主目录:
- 算法目录:
- 文档目录:
doc目录下的README文件介绍了doc目录的相关内容:
OpenSSL功能
- 对称加密算法
- 分组加密算法(支持ECB、CBC、CFB、OFB)
- AES
- DES/3DES
- Blowfish
- CAST
- IDEA
- RC2
- RC5
- SM4
- 流加密算法
- RC4
- EVP API
- EVP_Encrypt
- EVP_Decrypt
- 分组加密算法(支持ECB、CBC、CFB、OFB)
- 非对称加密算法
- 算法类型
- DH
- RSA
- DSA
- EC(椭圆曲线算法)
- SM2
- EVP API
- EVP_Seal(加密)
- EVP_Open(解密)
- EVP_Sign(签名)
- EVP_Verify(验签)
- 算法类型
- 信息摘要算法
- 算法类型
- MD2
- MD5
- MDC2
- SHA(SHA1/SHA128/SHA256)
- RIPEMD
- DSS/DSS1
- SM3
- EVP API
- EVP_Digest
- 算法类型
- **和证书管理
- ASN.1证书和**标准,提供了证书、公钥、私钥、证书请求及CRL等数据对象的DER,PEM和BASE64编解码功能
- 提供了产生各种公开**对和对称**的方法、函数和应用程序
- 公钥和私钥的DER编码功能
- 私钥的PKCS#12和PKCS#8的编码功能
- 私钥加密保护功能,使得**可以安全地进行存储和分发
- 实现了对证书X.509标准编解码、PKCS#12格式的编解码及PKCS#7的编解码功能
- 提供了一种文本数据库,支持证书管理功能(包括证书**产生、请求产生、证书签发、吊销和验证等功能)
- CA应用程序(一个小型的证书管理中心CA,实现了证书签发的整个流程和证书管理的大部分机制)
- SSL和TLS协议
- SSL
- TLS
- 应用程序
- **生成
- 证书管理
- 格式转换
- 数据加密
- 签名
- SSL测试
- 其他辅助配置
- Engine机制(使OpenSSl能够透明的适用第三方提供的软件加密库或者硬件加密设备进行加密,这是得OpenSSL不仅仅是一个加密库,而是一个通用的加密接口),下图展示了OpenSSL支持的Engine接口:
- 辅助功能
- BIO机制,封装了包括文件访问、内存访问和Socket等几乎所有类型IO接口,提高了代码的可重用性。
- 随机数生成和不按理
- 从口令生成**API
- 证书签发和管理中的配置文件机制
- 其他辅助功能
OpenSSL应用
- 基于OpenSSl指令的应用
- 基于OpenSSL加密库和协议库的应用