04.openssl背景

4.1 openssl结构
4.1.1 Openssl总体结构
Openssl整个软件包大概可以分成三个主要功能部分:密码算法库、SSL协议库及应用程序
目录名
功能描述
crypto
存放Openssl所有加密算法源码文件和相关标准如X509源码文件,
是Openssl 中最重要的目录,包含了Openssl密码算法库的所有内容
SSL
存放Openssl中SSL协议各个版本和TLS1.0协议源码文件,包含了Openssl
协议库的所有内容
Apps
存放Openssl中所有应用程序员文件,
如ca、x509等应用有的源文件就存放在这里
Doc
存放了Openssl中所有的使用文档,包含三个部分:应用程序说明文档、
加密算法库API说明文档及SSL协议API说明文档
Demos
存放了一些基于Openssl的应用程序例子,这些例子一般很简单,
演示怎么使用Openssl其中一个功能
Include
存放了使用Openssl的库时需要的头文件
Test
存放Openssl自身功能测试程序的源码文件。
4.1.2 Openssl算法目录
目录名称
目录类型
内容或功能描述
AES
对称算法
美国新的对称加密算法标准AES算法源码
Bf
对称算法
Blowfish对称加密算法源码
Cast
对称算法
CAST对称加密算法源码
Des
对称算法
DES和3DES对称算法源码
Idea
对称算法
IDEA对称算法源码
rc2
对称算法
RC2对称算法源码
rc4
对称算法
RC4对称算法源码
rc5
对称算法
RC5对称算法源码
dh
非对称算法
DH非对称密钥交换算法源码
dsa
非对称算法
DSA非对称算法源码,用于数字签名
ec
非对称算法
EC椭圆曲线算法源码
rsa
非对称算法
RSA非对称加密算法源码,既可以用于密钥交换,
也可以用于数字签名
md2
信息摘要算法
MD2信息摘要算法源码
md5
信息摘要算法
MD5信息摘要算法源码
mdc2
信息摘要算法
MDC2信息摘要算法源码
sha
信息摘要算法
SHA信息摘要算法源码,包括了SHA1算法
ripemd
信息摘要算法
RIPEMD-160信息摘要算法源码
comp
数据压缩算法
数据牙酸算法的函数接口,目前没有压缩算法,
只是定义了一些空的借口函数
asn1
PKI相关标准
ASN.1标准实现源码,只实现了PKI相关的部分,
不是完全实现,包括DER编解码等功能
ocsp
PKI相关标准
OCSP(在线证书服务协议)实现源码
pem
PKI相关标准
PEM标准实现源码,包括了PEM的编解码功能
pkcs7
PKI相关标准
PKCS#7标准实现源码。PKCS#7是实现加密信息封装的标准,
包括了证书封装的标准和加密数据的封装标准
pkcs12
PKI相关标准
PKCS#12 标准实现源码。包括了PKCS#12文件的编解码功能。
PKCS#12是一种常用的证书和密钥封装格式
x509
PKI相关标准
X509标准的实现源码
x509v3
PKI相关标准
X509第三版扩展功能的实现源码
krb5
其他标准支持
支持Kerberos协议的一些接口函数和结构定义
hmac
其他标准支持
HMAC标准的支持接哦古和函数源码
lhash
其他标准支持
动态HASH表结构和函数源码
bio
自定义
openssl自身定义的一种抽象IO接口,
封装了各种平台的几乎所有IO接口,
如文件、内存、缓存、标准输入输出及SOCKET,等等。
bn
自定义
openssl实现大数管理的结构及其函数
buffer
自定义
openssl自定义的缓冲区结构体
conf
自定义
openssl自定的管理配置结构和函数
dso
自定义
openssl自定义的加载动态链接库的管理函数接口
engine
自定义
openssl自定义的Engine机制源代码。
err
自定义
Openssl自定义的错误信息处理机制
evp
自定义
openssl定义的一组高层算法封装函数,
包括了对称加密算法封装、非对称加密算法封装、签名验证算法封装
及信息摘要算法封装
objects
自定义
openssl管理各种数据对象的定义和函数。
事实上objects的oid是根据ASN.1的标准进行命名的,
不完全是Openssl自定义结构
rand
自定义
openssl的安全随机数产生函数和管理函数
stack
自定义
定义了Openssl中STACK结构和相关管理函数
threads
自定义
Openssl处理线程的一些机制
txt_db
自定义
openssl提供文本证书库的管理机制
ui
自定义
openssl定义的一下用户接口交换函数
perlasm
自定义
编译的时候需要用到一些Perl辅助配置文件
4.1.3 Openssl文档目录
openssl的文档主要分为三部分:应用程序说明文档、密码算法库API文档及SSL协议库API文档。
4.2 Openssl功能
4.2.1 应用程序
指令
类型
功能说明
asn1parse
其他
对ASN.1编码的文件或字符串进行解析,
比如对证书文件,可以使用该指令对其进行解释,
他会将其中每一个数据对象打印处理
ca
证书签发和管理
该指令是一个功能强大的指令,模拟一个小型CA的功能,
并跟Openssl提供的文本数据库联系起来作为证书数据库。
该指令具有证书签发、验证、吊销等功能
ciphers
其他
该指令可以列出不同的协议支持的算法体系。
crl
证书签发和管理
该指令可以吊销证书列表(CRL)文件进行文本解析和验证
crl2pkcs7
格式转换
该指令可以CRL和多个证书封装成一个PKCS#7格式的证书文件
dgst
信息摘要和签名
该指令可以使用不同的信息摘要算法对输入的信息进行信息摘要操作,
并且可以对摘要的信息进行签名或者验证
dh
非对称密钥
生成和处理DH密钥参数文件,dhparam已经继承了该指令的功能,
一般不使用该指令了
dhparam
非对称密钥
用于生成DH密钥参数文件、解析DH密钥参数文件及格式转换等
dsa
非对称密钥
该指令用于对DSA密钥的格式转换及信息输出处理,
并且可以对DSA密钥进行加密
dsaparam
非对称密钥
该指令用于生成和处理DSA参数文件,
并且可以用于生成DSA密钥
enc
对称密钥
该指令可以使用Openssl支持的各种对称加密算法给定的数据
或者文件进行加密或者解密
engine
其他
该指令显示Openssl支持的Engine借口列表,
并可以测试Openssl支持的engine借口是否有效
errstr
其他
根据给定错误代码显示响应的错误信息
gendh
非对称密钥
生成DH密钥,该功能应景继承到dhparam指令中
gendsa
非对称密钥
根据DSA参数文件生成一个DSA私钥,
可以采用不同的算法对DSA私钥加密保护
nseq
格式转换
将普通X509证书转换成Netscape格式的证书
ocsp
其他
是一个实现在线证书状态协议OCSP的指令工具,
可以对证书的有效性进行验证等OCSP任务操作
passwd
其他
根据给定的口令通过HASH算法生成密钥
pkcs12
格式转换
该指令可以将X.509证书和PEM编码的私钥封装成PKCS#12格式的证书,
也可以将PKCS#12格式的证书专程X509证书和私钥
pkcs7
格式转换
该指令级那个PKCS#7格式文件转换成普通的X509格式证书或CRL
pkcs8
格式转换
该指令可以将私钥加密转换成PKCS#8格式或者将PKCS#8格式私钥
转换成普通的PEM或DER编码私钥
rand
其他
该质量可能给可以产生一些列的为随机数比特,并保存在文件中
req
证书签发和管理
该指令生成证书标准的请求文件,
而且可以生成自签名的跟证书
rsa
非对称密钥
该指令对RSA密钥进行格式转换和文本解析输出等处理,
格式转换的时候可以对密钥进行加密
rsautl
非对称密钥
该指令采用RSA算法对输入数据进行签名、验证、加密和解密等操作
s_client
SSL测试
该指令模拟一个SSL客户端,
可以对支持SSL的服务器进行测试和调试操作
s_server
SSL测试
该指令模拟一个SSL服务器,可以对支持SSL的浏览器进行测试和链接操作
s_time
SSL测试
该指令可以用来测试建立一个SSL链接的时间
sess_id
SSL测试
该指令可以处理经编码保存下来的SSL session结构
并可以根据选项打印出其中的信息
smime
其他
该只ing可以用来对S/MIME邮件进行加密、解密、签名和验证等操作
speed
其他
该指令测试算法的速度,如果有硬件加密设备,
也可以测试硬件加密设备的速度
spkac
SSL测试
该指令用来处理Nestcape的签名公钥和挑战文件(SPKAC),
可以验证SPKAC的签名,打印信息,也可以用来生成SPKAC文件
verify
证书签发和管理
该指令用来验证证书或者证书链的合法性
version
其他
该指令用来输出openssl的版本信息
x509
证书签发和管理
该指令用来显示证书内容及签发新的证书
4.2.1 Engine机制
简要名称
Engine接口描述
dynamic
动态加载Engine设备的接口
cswift
CrytoSwift的硬件加密设备Engine支持
chil
nChipher硬件加密设备Engine支持
atalla
Atalla硬件加密设备Engine支持
nuron
Nuron硬件加密设备Engine支持
ubsec
UBSEC硬件设备Engine支持
aep
Aep硬件加密设备Engine支持
sureware
SureWare硬件加密设备Engine支持
4758cca
IBM 4758 CCA硬件加密设备Engine支持
4.3 Openssl应用
openssl的应用一般可以分为两种不同的方式:基于Openssl指令的应用和基于Openssl加密库和协议库应用。
4.4 Openssl授权
openssl的授权问题很多人并不重视,或者,你也不愿意浪费宝贵的时间在这一节上面。但是,阅读本书的人基本上都是以通过自己的知识在产品中的实现来体现自己的价值的,所以努力维护知识产权,从根本上还是维护了我们自己的利益。
Openssl的授权有两部分组成的:Openssl授权和原始的SSLeay授权。当然,这两种授权大同小异,基本上没有限制的,只要产品加入或者保留Openssl和SSLeay的版本声明就行。
4.5 本章小结
本章对Openssl作了一个初步的介绍,给读者全面展示openssl的历史、结构、功能和应用。
本章首先介绍了Openssl的背景,并将Openssl和其他同类的加密算法做了比较
原文地址:https://www.cnblogs.com/aixiaoxiaoyu/p/8394960.html