一、系统环境简介
操作系统 -- Ubuntu 20.04.3 LTS
gcc 版本 -- gcc version 9.3.0
openssl 版本 -- openssl3.0.1
二、简述
Openssl 是一个免费开源的工具包,实现了 TLS/SSL 协议和绝大多数的主流密码算法和标准,最初的版本由 Eric A. Young 和 Tim J. Hudson 创建,其官方网站为 www.openssl.org。
Openssl 主要包含三个部分:
(1)libssl -- TLS 协议的实现(RFC 8446);
(2)libcrypto -- 加密算法库,支持绝大多数密码算法,是实现 TLS 协议和 PKI 体系的基础;
(3)openssl -- 命令行工具
三、编译和安装
(1)在官网下载 openssl3.0.1 版本,得到 openssl-3.0.1.tar.gz;
(2)输入 tar -zxvf openssl-3.0.1.tar.gz 解压 tar 包到当前目录;
(3)进入解压后的目录执行 ./Configure 生成 Makefile 文件(openssl 默认安装到 /usr/local 下,如需指定安装路径,则执行 ./Configure --prefix=/xxx/xxx);
(4)执行 make 编译;
(5)执行 make install 安装;
四、常用的编译选项和配置
默认编译生成 release 版本的共享库,如果要生成可调式的库,则输入 ./Configure --debug;
具体的编译选项请查询 INSTALL.md 文件。
五、openssl3.0 加密算法库目录结构
aes -- AES 对称算法实现;
aria -- ARIA 对称算法实现;
asn1 -- ASN.1 编解码实现;
aysnc -- 异步线程池实现;
bf -- blowfish 对称算法实现;
bio -- I/O 流的抽象;
bn -- 大数运算实现;
buffer -- 内存缓冲区;
camellia -- Camellia 块密码算法;
chacha -- ChaCha20 流密码算法;
cmac -- 基于分组密码的消息认证码;
cmp -- 证书管理协议;
cms -- 加密消息语法;
comp -- 压缩算法;
conf -- 配置文件管理;
crmf -- 暂时不确定这个是做什么的;
ct -- 证书透明化(Certificate Transparency);
des -- des 对称算法;
dh -- 密钥交换协议;
dsa -- DSA签名算法;
dso -- 动态库管理;
ec -- 椭圆曲线算法;
encode_decode -- 编码和解码;
engine -- 引擎框架;
err -- 错误处理;
ess -- 增强安全服务(Enhanced Security Services);
evp -- 高层算法接口;
ffc -- 有限域加密;
hmac -- 基于 hash 的消息鉴别码;
http -- http 协议实现;
idea -- 国际数据加密算法;
kdf -- 密钥派生函数;
lhash -- 哈希链表实现;
md2 -- md2 摘要算法;
md4 -- md4 摘要算法;
md5 -- md5 摘要算法;
mdc2 -- mdc2 摘要算法;
modes -- 对称算法的模式;
objects -- 对象管理;
ocsp -- 在线证书状态协议;
pem -- PEM 编解码实现;
pkcs7 -- 加密签名消息语法标准 PKCS7 实现;
pkcs12 -- 个人信息交换语法标准 PKCS12 实现;
poly1305 -- Poly1305 消息认证码;
property -- 暂不清楚这个目录下的文件是做什么的;providers -- 安全服务提供者,这个是 openssl3.0+ 最具特色的设计;
rand -- 随机数;
rc2 -- RC2 对称算法;
rc4 -- RC4 对称算法;
rc5 -- RC5 对称算法;
ripemd -- RACE原始完整性校验消息摘要;
rsa -- RSA 非对称算法;
seed -- 基于随机种子的对称加密算法;
sha -- sha1、sha256、sha512等摘要算法实现;
siphash -- SipHash 摘要算法;
sm2 -- 国密 sm2 椭圆曲线算法;
sm3 -- 国密 sm3 摘要算法;
sm4 -- 国密 sm4 分组加密算法;
srp -- 暂时不清楚是做什么的;
stack -- 栈的实现;
store -- 临时存储通道;
ts -- 可信时间?
txt_db -- 基于文本的数据库;
ui -- 用户接口;
whirlpool -- Whirlpool 散列算法;
x509 -- x509 证书系列标准实现。