参考链接

  • 在ubuntu环境下执行openssl编译和安装_MY CUP OF TEA的博客
  • OpenSSL编程 赵春平

OpenSSL

简介

  • 它提供的主要功能有:SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准实现和PKCS12个人数字证书格式实现等功能

安装

  • 运行./config --prefix=/usr/local/openssl  即生成动态库,且将其安装在 /usr/local/openssl  文件夹下
  • 更多选项用./config --help 来查看
  • 比如:no-mdc2、no-cast no-rc2、no-rc5、no-ripemd、no-rc4 no-des 、no-md2、no-md4、no-idea 、 no-aes、no-bf、no-err、no-dsa、no-dh、no-ec、no-hw、no-asm、no-krb5、no-dso 、no-threads 、 no-zlib、-DOPENSSL_NO_HASH_COMP、-DOPENSSL_NO_ERR、-DOPENSSL_NO_HW 、 -DOPENSSL_NO_OCSP、-DOPENSSL_NO_SHA256 和-DOPENSSL_NO_SHA512 等,去掉不必要的内容可以减少生成库的大小。
  • 若要生成 debug 版本的库和可执行程序加-g 或者 -g3(openssl 中有很多宏,需要调试学习最好加上-g3)。
  • make
  • make test 开始测试,此步骤可选
  • make install
  • openssl 会被安装到/usr/local/openssl 目录,包括头文件目录 include、可执行文件目录 bin、man 在线帮助、库目录 lib 以及配置文件目录(ssl)

openldap开启ssl open ssl_服务器

 源代码

openldap开启ssl open ssl_openldap开启ssl_02

  • openssl 源代码主要由ssl 库、工具源码、范例源码以及测试源码组成。

openldap开启ssl open ssl_服务器_03

crypto源代码

  • 包括如下内容:
  • 1) asn.1 DER 编码解码(crypto/asn1 目录),它包含了基本 asn1 对象的编解码以及数字证书请求、数字证书、CRL撤销列表以及PKCS8等最基本的编解码函数。这些函数主要通过宏来实现。
  • 2)抽象 IO(BIO,crypto/bio 目录),本目录下的函数对各种输入输出进行抽象,包括 文件、内存、标准输入输出、socket和 SSL 协议等。
  • 3)大数运算(crypto/bn 目录),本目录下的文件实现了各种大数运算。这些大数运 算主要用于非对称算法中密钥生成以及各种加解密操作。另外还为用户提供了大量辅助函数,比如内存与大数之间的相互转换。
  • 4)字符缓存操作(crypto/buffer 目录)。
  • 5)配置文件读取(crypto/conf 目录),openssl 主要的配置文件为 openssl.cnf。本目录下的函数实现了对这种格式配置文件的读取操作。
  • 6) DSO(动态共享对象,crypto/dso 目录),本目录下的文件主要抽象了各种平台的动态库加载函数,为用户提供统一接口。
  • 7) 硬件引擎(crypto/engine 目录),硬件引擎接口。用户如果要写自己的硬件引擎, 必须实现它所规定的接口。
  • 8) 错误处理(crypto/err 目录),当程序出现错误时,openssl 能以堆栈的形式显示各 个错误。本目录下只有基本的错误处理接口,具体的的错误信息由各个模块提供。各个模块专门用于错误处理的文件一般为*_err..c 文件。
  • 9) 对称算法、非对称算法及摘要算法封装(crypto/evp 目录)。
  • 10) HMAC(crypto/hmac 目录),实现了基于对称算法的 MAC。
  • 11) hash 表(crypto/lhash 目录),实现了散列表数据结构。openssl 中很多数据结构都是以散列表来存放的。比如配置信息、ssl session 和 asn.1 对象信息等。
  • 12) 数字证书在线认证(crypto/ocsp 目录),实现了 ocsp 协议的编解码以及证书 有效性计算等功能。
  • 13) PEM 文件格式处理(crypto/pem),用于生成和读取各种 PEM 格式文件, 包括各种密钥、数字证书请求、数字证书、PKCS7消息和PKCS8消息等。
  • 14) pkcs7 消息语法(crypto/pkcs7 目录),主要实现了构造和解析 PKCS7 消息;
  • 15) pkcs12 个人证书格式(crypto/pckcs12 目录),主要实现了 pkcs12 证书的构造和解析。
  • 16) 队列(crypto/pqueue 目录),实现了队列数据结构,主要用于 DTLS。  未找到
  • 17) 随机数(crypto/rand 目录),实现了伪随机数生成,支持用户自定义随机数 生成。
  • 18) 堆栈(crypto/stack 目录),实现了堆栈数据结构。 
  • 19) 线程支持(crypto/threads),openssl 支持多线程,但是用户必须实现相关接口。未找到
  • 20) 文本数据库(crypto/txt_db 目录)。
  • 21) x509 数字证书(crypto/x509 目录和 crypto/x509v3),包括数字证书申请、数字证书和CRL的构造、解析和签名验证等功能了;
  • 22) 对称算法(crypto/aes、crypto/bf、crypto/cast、ccrypto/omp (未找到)和 crypto/des 等目录)。
  • 23) 非对称算法(crypto/dh、crypto/dsa、crypto/ec 和 crypto/ecdh(未找到))。
  • 24) 摘要算法(crypto/md2、crypto/md4、crypto/md5 和 crypto/sha)以及密钥交 换/认证算法(crypto/dh 和 crypto/krb5  (未找到))。 

SSL 源代码 

openldap开启ssl open ssl_运维_04

  • ssl 库所有源代码在 ssl 目录下,包括了 sslv2、sslv3、tlsv1 和 DTLS 的源代码。各个版本基本上都有客户端源码(*_clnt.c)、服务源码(*_srvr.c)、通用源码(*_both.c)、底层包源码(*_pkt.c)、方法源码(*_meth.c)以及协议相关的各种密钥计算源码(*_enc.c)等,都很有规律。  存疑,有问题

工具源码 apps

  • 工具源码主要在 crypto/apps 目录下,默认编译时只编译成 openssl(windows 下为openssl.exe)可执行文件。该命令包含了各种命令工具。此目录下的各个源码可以单独进行编译

openldap开启ssl open ssl_linux_05

范例源码 

  • 范例源码在 demo 目录下

openldap开启ssl open ssl_linux_06

engines

  • 另外 engines 目录给出了 openssl 支持的几种硬件的 engines 源码,也可以作为 engine 编写参考。

openldap开启ssl open ssl_运维_07

 test测试源码

  • 测试源码主要在 test 目录下。

openldap开启ssl open ssl_openldap开启ssl_08