openssl证书制作及编程

本文详细介绍了如何使用openssl制作证书,包括创建CA,生成服务器和客户端的私钥及CSR,签名证书,以及将证书和私钥合并为PEM格式。此外,还探讨了openssl的编程,特别是原生态的编程方式,涉及到SSL_CTX和SSL结构,以及BIO的概念和应用,如数据源、过滤器BIO、BIO链和常用BIO函数。
摘要由CSDN通过智能技术生成

一、openssl证书制作:

1、创建目录./demoCA/ ./demoCA/newcerts/,创建文件 ./demoCA/index.txt ./demoCA/serial。

2、执行echo 01 > ./demoCA/serial

3、制作自己的CA证书

$openssl req -new -x509 -keyout ca.key -out ca.crt

4、生成服务端的私钥(key文件)及csr文件

$openssl genrsa -des3 -out server.key 1024

$openssl req -new -key server.key -out server.csr

5、生成客户端的私钥(key文件)及csr文件

$openssl genrsa -des3 -out client.key 1024

$openssl req -new -key client.key -out client.csr

6、用生成的CA的证书为刚才生成的server.csr,client.csr文件签名

$openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key

$openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key

7、生成pem格式证书

有时需要用到pem格式的证书,可以用以下方式合并证书文件(crt)和私钥文件(key)来生成

$cat client.crt client.key> client.pem

$cat server.crt server.key > server.pem

二、openssl编程

      openssl的编程有两种风格:原生态的和层层封装的。

2.1原生态openssl编程

      需要使用BSD socket和openssl中的较底层的API。原生态openssl有两个比较重要的结构SSL和SSL_CTX。

      SSL_CTX数据结构是用与建立SSL/TSL连接的结构,可用于指定通讯协议(SSLv23/TSLv1)、证书、密钥等相关信息。

      SSL数据结构是和具体会话相关联的结构。

常用函数:

      SSL_library_init():初始化一个openssl库。

   SSL_CTX_new(const SSL_METHOD *method):创建一个CTX结构。
   SSL_new(SSL_CTX *ctx):创建一个SSL结构。
   SSL_set_fd(SSL *ssl, int fd):把ssl结构和具体会话相关联。
   SSL_accept(SSL *ssl)、SSL_connect(SSL *ssl):用于SSL会话握手。
   SSL_read(SSL *ssl, void *buf, int num)和SSL_write(SSL *ssl, void *buf, int num)用于SSL读写。
   SSL_shutdown(SSL *ssl)用于关闭一个SSL/TSL会话。
   使用这些函数就可以进行最基本的openssl编程了。Openssl编程框架如下。
1 
   代码示例:HTTPS服务器和客户端
   服务器端:
第一章 基础知识 81.1 对称算法 81.2摘要算法 81.3 公钥算法 91.4 回调函数 11第二章 openssl简介 132.1 openssl简介 132.2 openssl安装 132.2.1 linux下的安装 132.2.2 windows编译与安装 132.3 openssl源代码 142.4 openssl学习方法 16第三章openssl堆栈 173.1 openssl堆栈 173.2 数据结构 173.3 源码 173.4 定义用户自己的堆栈函数 183.5 编程示例 19第四章 openssl哈希表 214.1 哈希表 214.2 哈希表数据结构 214.3 函数说明 224.4 编程示例 24第五章 openssl内存分配 275.1 openssl内存分配 275.2 内存数据结构 275.3 主要函数 285.4 编程示例 28第六章 Openssl动态模块加载 316.1 动态库加载 316.2 DSO概述 316.3 数据结构 316.4 编程示例 32第七章 openssl抽象IO 357.1 openssl抽象IO 357.2 数据结构 357.3 BIO 函数 367.4 编程示例 377.4.1 mem bio 377.4.2 file bio 377.4.3 socket bio 387.4.4 md BIO 407.4.5 cipher BIO 407.4.6 ssl BIO 417.4.7 其他示例 43第八章 Openssl配置文件 448.1 概述 448.2 openssl配置文件读取 448.3 主要函数 448.4 编程示例 45第九章 Openssl随机数 479.1 随机数 479.2 openssl随机数数据结构与源码 479.3 主要函数 489.4 编程示例 49第十章 Openssl文本数据库 5110.1 概述 5110.2 数据结构 5110.3 函数说明 5210.4 编程示例 52第十一章 Openssl大数 5511.1 介绍 5511.2 openssl大数表示 5511.3 大数函数 5511.4 使用示例 58第十二章 Openssl base64编解码 6512.1 BASE64编码介绍 6512.2 BASE64编解码原理 6512.3 主要函数 6612.4 编程示例 66第十三章 Openssl ASN1库 6913.1 ASN1简介 6913.2 DER编码 7013.3 ASN1基本类型示例 7113.4 openssl 的ASN.1库 7313.5 用openssl的ASN.1库DER编码 7413.6 Openssl的ASN.1宏 7513.7 ASN1常用函数 7613.8 属性证书编码 90第十四章 Openssl错误处理 9414.1 概述 9414.2 数据结构 9414.3 主要函数 9614.4 编程示例 98第十五章 Openssl摘要与HMAC 10115.1 概述 10115.2 openssl摘要实现 10115.3 函数说明 10115.4 编程示例 10215.5 HMAC 103第十六章 Openssl数据压缩 10516.1 简介 10516.2 数据结构 10516.3 函数说明 10616.4 openssl中压缩算法协商 10616.5 编程示例 107第十七章 Openssl RSA 10817.1 RSA介绍 10817.2 openssl的RSA实现 10817.3 RSA签名与验证过程 10917.4 数据结构 10917.4.1 RSA_METHOD 10917.4.2 RSA 11017.5 主要函数 11117.6编程示例 11217.6.1密钥生成
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值