企业网站营销的优缺点,企业推广网络营销,关于网站建设实验报告,广州建设集团OpenSSL总体架构  软件包分为三个主要的功能部分#xff1a;密码算法库 、 SSL协议库及应用程序 MacOS#xff0c;MS#xff0c;OS/2及 VMS这几个目录#xff0c;包含了在不同的 平台编译时的环境变量配置文件#xff0c;在安装编译完成之后#xff0c;这几个目录就没有作…OpenSSL总体架构  软件包分为三个主要的功能部分密码算法库 、 SSL协议库及应用程序 MacOSMSOS/2及 VMS这几个目录包含了在不同的 平台编译时的环境变量配置文件在安装编译完成之后这几个目录就没有作用了。bugscertsperlshlibtimestools 及 utils 目录都是一些辅助的目录  里面包含文件对于我们使用 OpenSSL进行工作并没有很多的帮助所以可以不作深究。但是编译的时候还是需要的Crypto目录是 OpenSSL所有密码算法和一些 PKI相关标准源码存放的目录也是 OpenSSL 最 重 要 的 一 个 目 录 。SSL 目 录 是 SSL 协 议 各 个 版 本 的 实 现 源 码 存 放 的 目 录 。Doc目录是 OpenSSL使用的说明文档存放的目录这个目录对于 OpenSSL使用者来说具有 “芝麻开门”的作用。Apps目录存放了OpenSSL所有应用程序的源代码文件也是研 究 OpenSSL API 的 很 好 的 例 子 。Demos 目 录 就 是 一 些 乐 意 奉 献 的 人 写 的 OpenSSL 应 用 的例子在你开始使用 OpenSSL进行工作之前可以看看这个目录或许会有所帮助。Include 目 录 是 使 用 OpenSSL 的 库 进 行 编 程 的 时 候 可 能 需 要 使 用 到 的 一 些 头 文 件 。Test 目录是 OpenSSL一些自身功能测试源程序所在的地方。
注意事项 
如果在 Windows平台下将 OpenSSL编译成功后还会增加三个新的目录:Inc32 Out32dlTmp32dl。Inc32目录和Include目录相似存放的是 Windows平台下使用 OpenSSL进行编程需要包含的头文件。Out32dl则存放了 OpenSSL编译成功后的可执行应用程序、链接库 LIB文件和动态 DLL 文件。Tmp32dl则是在编译过程中存放 OBJ等 临时文件的目录。OpenSSL算法目录 
Crypto 目录包含了OpenSSL密码算法库的所有源代码文件 是 OpenSSL中最重要的目录之一。OpenSSL的密码算法库包含了 OpenSSL中所有密码算法、密钥管理和证书管理相关标准的实现在 Windows下编程后的库文件名为libeay32.lib 在 Linux 下 编 译后生成的库文件名为 libcrypto.a。 Crypto目录下包含了众多的子目录这些子目录大多数以相关的算法或标准名称的简写命名。当然并非所有这 些目录存放的源文件都是密码算法和标准有些是 OpenSSL本身的一些相关功能文件 如 BIODSO 和 EVP 等 对称加密算法8种非对称加密算法4种信息摘要算法5种。 openssl文档目录 
OpenSSL的文档使用Perl文档格式保存为 “.pod”文件对于 Windows平台的用户阅读这样的文档可能存在一些麻烦可以使用Perl工具pod2text或者pod2html 指令将文档转换成txt文本格式或者html格式以方便阅读。doc文档涉及到 应用程序说明文档、密码算法库 API文档及SSL协议库API文档应用程序说明文档目录 (Apps)包含了大部分OpenSSL应用程序的使用和参数说明并有部分例子。密码算法库API文档 (Crypto)则包含了部分OpenSSL密码算法库的API的使用说明可惜不是很全面。SSL协议库 API文档包含了 OpenSSL实现的SSL协议和 TLS协议的大部分 API使用说明该部分由于变动比较缓慢所以文档相对全面一些。此外 目前版本的 OpenSSL文档目录下还有一个 Howto子目录现在只有一个文件内容是关于证书的一些问题希望后续的版本能够丰富这个 Howto目录。OpenSSL文档目录的根目录下还有个综述性质的文档 ssleay.txt 和 openssl.txt 也是值得一看的 。
Openssl的功能 
对称加密算法 
OpenSSL一共提供了8种对称加密算法其中7种是分组加密算法仅有的一种流 加密算法是 RC4。这7种分组加密算法分别是 AESDESBlowfishCASTIDEARC2RC5都支持电子密码本模式 (ECB)、加密分组链接模式 (CBC)、加密反馈模式 (CFB)和输出反馈模式 (OFB)四种常用的分组加密模式。其中AES使用的加密反馈模式 (CFB)和输出反馈模式 (OFB)分组长度是128位其他算法使用的则是64位。事实上DES算法里面不仅仅是常用的 DES算法还支持三个密钥和两个密钥的3DES 算法。 OpenSSL 还使用EVP封装了所有的对称加密算法使得各种对称加密算法能够使用统一的 API接口EVP_Encrypt 和 EVP_Decrypt 进行数据的加密和解密 大大 提高了代码的可重用性能 。
非对称加密算法 
OpenSSL一共实现了4种非对称加密算法包括 DH 算法、RSA 算法、DSA 算法和 椭圆曲线算法 (EC)。DH算法一般用于密钥交换。RSA算法既可以用于密钥交换也可以用于数字签名当然如果你能够忍受其缓慢的速度那么也可以用于数据加密。DSA 算法则一般只用于数字签名。OpenSSL 也使用EVP技术对不同功能的非对称加密算法进行封装提供了统一的 API接口。如果使用非对称加密算法进行密钥交换或者密钥加密 则使用 EVP_Seal 和 EVP_Open 进行加密和解密 ; 如果使用非对称加密算法进行数字签名 则使用 EVP_Sign 和 EVP_Verify 进行签名和验证 。
信息摘要算法 OpenSSL实现了5种信息摘要算法分别是 MD2MD5MDC2SHA (SHA1)和 RIPEMD。SHA 算法事实上包括了SHA 和 SHA1两种信息摘要算法 。 此外  OpenSSL还实现了 DSS标准中规定的两种信息摘要算法 DSS和 DSS1。  OpenSSL 采用EVP_Digest 接口作为信息摘要算法统 一 的 EVP 接 口  对所有信息摘要算法进行了封装提高了代码的重用性。当然跟对称加密算法和非对称加密算法不一 样信息摘要算法是不可逆的不需要一个解密的逆函数。 
密钥和证书管理 
密钥和证书管理是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)实现 了证书签发的整个流程和证书管理的大部分机制。
SSL 和TLS 协议 
虽然已经有众多的软件实现了SSL的功能但是OpenSSL里面实现的SSL协议能够让我们对SSL协议有一个更加清楚的认识因为至少存在两点:一是OpenSSL实现的SSL协议是开放源代码的我们可以研究SSL协议实现的每一个细节;二是OpenSSL实现的SSL协议是纯粹的SSL协议没有跟其他协议(如HTTP)协议结合在一起。由于SSL协议现在经常跟HTTP协议在一起应用形成HTTPS协议所以很多人误认为SSL协议就是为了保护Web安全性的这实在是一个很大的解!OpenSSL实现了SSL协议的SSLv2和SSLv3支持了其中绝大部分的算法协议。OpenSSL也实现了TLSv1.0TLS是SSLv3的标准化版虽然区别不大但毕竟有很多细节不尽相同。OpenSSL除了提供使用SSL协议和TLS协议的API接口函数之外还提供了两个不错的应用程序S_Client和S_Server。S_Client用来模拟SSL客户端可以用来测试SSL服务器比如IIS和带mod_ssl的Apache等;而S_Server模拟了一个SSL服务器可以用来测试SSL客户端比如IE和Netscape等。事实上由于是开放源代码的S_Client和S_Server程序的源代码还是很好的OpenSSL的SSL接口API使用例子
应用程序 
现在OpenSSL的应用中很多都是基于OpenSSL的应用程序而不是其API的如OpenCA就是完全使用OpenSSL的应用程序实现的。OpenSSL的应用程序是基于OpenSSL的密码算法库和SSL协议库写成的所以也是一些非常好的OpenSSL的API使用范例OpenSSL的应用程序主要包括密钥生成、证书管理、格式转换、数据加密和签名、SSL测试以及其他辅助配置功能。表4.4是OpenSSL-0.9.7版本的指令列表。在表4.4中根据指令的性质对指令进行了归类这些归类不一定科学。这些类型包括:对称密钥指令、非对称密钥指令、信息摘要和签名指令、证书签发和管理指令、标准转换指令、SSL测试指令及其他指令。Engine机制 Engine机制的目的是为了使OpenSSL能够透明地使用第三方提供的软件加密库或者硬件加密设备进行加密。   目前OpenSSL的0.9.7版本支持的内嵌第三方加密设备有8种包括:CryptoSwiftnCipherAtalaNuronUBSECAepSureWare及IBM4758CCA的硬件加密设备。现在还出现了支持PKCS#11接口的Engine接口支持微软CryptoAPI的接口也有人进行开发。当然所有上述Engine接口支持不一定很全面 BIO机制 
BIO机制是OpenSSL提供的一种高层IO接口该接口封装了几乎所有类型的IO接口如内存访问、文件访问及Socket等。这使得代码的重用性大幅度提高OpenSSL提供的API的复杂性也降低了很多。前面介绍的EVP封装也提高了OpenSSL代码的可重用性。
OpenSSL的应用 
penSSL的应用一般可以分为两种不同的方式:基于OpenSSL指令的应用和基于OpenSSL加密库和协议库的应用。前者更容易一些而后者需要做的工作更多一些。当然这些应用不一定是截然分开的你当然可以两种都用一点比如使用SSL协议的API但是证书可以使用OpenSSL的指令签发。
参考链接 
GitHub - openssl/openssl: TLS/SSL and crypto libraryopenssl/openssl - Sourcegraph