openssl
fryingpan
这个作者很懒,什么都没留下…
展开
-
openssl之BIO系列之15---内存(mem)类型BIO
内存(mem)类型BIO所定义的相关系列函数如下(openssl/bio.h): BIO_METHOD * BIO_s_mem(void); BIO_set_mem_eof_return(BIO *b,int v) long BIO_get_mem_data(BIO *b, char **pp) BIO_set_mem_buf(BIO *转载 2014-10-22 13:20:35 · 3130 阅读 · 0 评论 -
生成带证书链的数字证书
安全SSL通信双方如果都使用自签名证书,则需要把对方的证书加入到自己的信任证书库,如果是常见的C/S结构,则需要在服务器端信任证书中加入所有的客户端证书,管理非常不方便。 可以使用证书链来实现,以简化管理,增加新的客户端无需修改服务器信任证书库。1. http://sourceforge.net/projects/xca,下载证书生成工具,目前最新版为0.6.3,很多介绍都是使用opens转载 2014-10-20 16:13:12 · 4777 阅读 · 0 评论 -
OpenSSL握手协议分析
一、 SSL握手协议(SSL Handshake Protocal)SSL握手协议的作用是在正式的秘密通信之前,让服务器和客户之间互相鉴别对方的身份并协商一种会话的加密算法和加密密钥,主要分为两个方面:1)客户端和服务器之间互相验证身份C/S主要是通过证书来验证对方的合法性。合法性包括:证书是否过期、发行服务器证书的CA是否可靠、发行者证书的公钥能否正确解开服务器证转载 2014-10-20 17:02:28 · 1635 阅读 · 0 评论 -
使用 OpenSSL API 进行安全编程
OpenSSL API 的文档有些含糊不清。因为还没有多少关于 OpenSSL 使用的教程,所以对初学者来说,在 应用程序中使用它可能会有一些困难。那么怎样才能使用 OpenSSL 实现一个基本的安全连接呢? 本教程将帮助您解决这个问题。学习如何实现 OpenSSL 的困难部分在于其文档的不完全。不完全的 API 文档通常会妨碍开发人员 使用该 API,而这通常意味着它注定要失败。但 Op转载 2014-10-17 17:23:57 · 1005 阅读 · 0 评论 -
使用 OpenSSL API 进行安全编程,第 2 部分: 安全握手
不久之前,安全握手是双方的业务得以实现的一个标记。毕竟,握手是一次面对面的机会,可以对潜在的合作者进行评价。安全且可信的握手意味着事务的双方都相信它们正在做的事情对双方都是有益的。不安全的握手标记着只有一方会对事务有着正确的理解。握手的工作方式与在线事务相同。developerWorks 上的前一篇文章“使用 OpenSSL API 进行安全编程,第 1 部分:API 概述”转载 2014-10-17 17:21:49 · 613 阅读 · 0 评论 -
openssl之BIO系列之8---读写出错控制
当BIO_read或BIO_write函数调用出错的时候,BIO本身提供了一组出错原因的诊断函数,他们定义如下(openssl/bio.h): #define BIO_should_read(a) ((a)->flags & BIO_FLAGS_READ) #define BIO_should_write(a) ((a)->flags & BIO_FLAGS_WRITE)转载 2014-10-22 10:22:27 · 1612 阅读 · 0 评论 -
openssl之BIO系列之12---文件描述符(fd)类型BIO
文件描述符类型BIO也是一个source/sink型的BIO,它定义了以下一些类型的函数(openssl/bio.h): BIO_METHOD * BIO_s_fd(void); #define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) #define BIO_get_fd(b,c) BIO_ctr转载 2014-10-22 11:53:40 · 728 阅读 · 0 评论 -
openssl之BIO系列之13---Socket类型BIO
Socket类型的BIO也是一种source/sink型BIO,封装了Socket的IO操作,它相关的一些函数定义如下(openssl/bio.h): BIO_METHOD * BIO_s_socket(void); #define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) #define BIO_转载 2014-10-22 11:58:39 · 806 阅读 · 0 评论 -
openssl之BIO系列之14---源类型的NULL型BIO
这是一个空的source/sink型BIO,写到这个BIO的数据都被丢掉了,从这里执行读操作也总是返回EOF。该BIO非常简单,其相关函数的定义如下(openssl/bio.h): BIO_METHOD * BIO_s_null(void); 其相关的源文件实现函数在bss_null.c里面。 【BIO_s_null】 该函数返回一个NULL型的BIO_M转载 2014-10-22 13:23:04 · 450 阅读 · 0 评论 -
openssl之BIO系列之16---BIO对(pair)类型BIO
前面我们已经介绍过BIO对的概念,其实更进一步,BIO对也是作为一种source/sink类型的BIO来处理的,也就是说,BIO里面还提供了一种专门的BIO_METHO方法来处理BIO对的各种操作。BIO对类型的BIO各种相关的函数定义如下(openssl/bio.h): BIO_METHOD *BIO_s_bio(void); #define BIO_make转载 2014-10-22 13:28:39 · 685 阅读 · 0 评论 -
openssl之BIO系列之17---连接(connect)类型BIO
该类型的BIO封装了socket的Connect方法,它使得编程的时候可以使用统一的BIO规则进行socket的connect连接的操作和数据的发送接受,而不用关心具体平台的Socket的connect方法的区别。其相关定义的一些函数如下(openssl/bio.h): BIO_METHOD * BIO_s_connect(void); #define BIO_set_co转载 2014-10-22 13:27:32 · 1337 阅读 · 0 评论 -
openssl之BIO系列之7---BIO链的操作
我在介绍BIO结构的时候说过,BIO结构其实是一个链式结构,单个BIO是只有一个环节的BIO链的特例,那么我们怎么构造或在一个BIO链中增加一个BIO,怎么从一个BIO链中删除一个BIO呢,那么本节就是专门讲述这个问题的。 其实,在openssl中,针对BIO链的操作还是很简单的,仅仅包括两个函数(openssl/bio.h): BIO * BIO_push(BIO *b,B转载 2014-10-22 10:15:38 · 542 阅读 · 0 评论 -
openssl之BIO系列之6---BIO的IO操作函数
这些函数是BIO的基本读写操作函数,包括四个,他们的定义如下(openssl/bio.h): int BIO_read(BIO *b, void *buf, int len); int BIO_gets(BIO *b,char *buf, int size); int BIO_write(BIO *b, const void *buf, int len);转载 2014-10-22 10:17:56 · 838 阅读 · 0 评论 -
使用 OpenSSL API 进行安全编程,第 3 部分: 提供安全服务
本系列文章的前两部分讨论了使用 OpenSSL 来创建客户机端应用程序的内容。第 1 部分 讨论了使用 OpenSSL 创建基本安全客户机的问题,而 第 2 部分 则深入讨论了有关数字证书的问题。在阅读本文的读者给我发回很多 e-mail 和正面反馈之后,我非常清楚,接下来的一期理论介绍应该是有关服务器的。服务器为网络和 Internet 提供了访问诸如文件和设备之类的资源的访问能转载 2014-10-17 17:32:12 · 711 阅读 · 0 评论 -
利用OpenSSL库对Socket传输进行安全加密(RSA+AES)
利用OpenSSL库对Socket传输进行安全加密(RSA+AES) 1. 利用RSA安全传输AES生成密钥所需的Seed(32字节) 2. 利用AES_encrypt/AES_decrypt对Socket上面的业务数据进行AES加密/解密 理论上只需要AES就能保证全部流程,但由于AES加密所需要的AES-KEY是一个结构。 这个一个结构,如果通过网络进行传输,就需要对它进行网络转载 2014-10-20 17:01:22 · 637 阅读 · 0 评论 -
openssl生成https证书 (转)
1.首先要生成服务器端的私钥(key文件):openssl genrsa -des3 -out server.key 1024运行时会提示输入密码,此密码用于加密key文件去除key文件口令的命令:openssl rsa -in server.key -out server.key2.openssl req -new -key server.key -out serve转载 2014-10-20 16:15:49 · 624 阅读 · 0 评论 -
openssl之BIO系列之1---抽象的IO接口
BIO-抽象的IO接口 (作者:DragonKing Mail:wzhah@263.net 发布于:http://gdwzh.126.com openssl专业论坛) 其实包含了很多种接口,用通用的函数接口,主要控制在BIO_METHOD中的不通实现函数控制, 我初步估计了一下,大概有14种,包括6种filter型和8种source转载 2014-10-22 10:04:56 · 754 阅读 · 0 评论 -
openssl之BIO系列之2---BIO结构和BIO相关文件介绍
BIO结构和BIO相关文件介绍 (作者:DragonKing Mail:wzhah@263.net 发布于:http://gdwzh.126.com openssl专业论坛) BIO的结构定义和相关项解析如下: (包含在bio.h文件中,其主文件为bio_lib.c) typedef struct bio_st BIO; s转载 2014-10-22 10:08:49 · 839 阅读 · 0 评论 -
openssl之BIO系列之3---BIO的声明和释放等基本操作
BIO的声明和释放等基本操作 ---根据openssl doc/crypto/bio/bio_new.pod翻译和自己的理解写成 (作者:DragonKing Mail:wzhah@263.net 发布于:gdwzh.126.com openssl专业论坛) 在BIO的基本操作系列函数中,他们用来BIO分配和释放操作,包括: BIO_转载 2014-10-22 10:08:56 · 1050 阅读 · 0 评论 -
openssl之BIO系列之4---BIO控制函数介绍
BIO控制函数介绍 BIO控制函数有许多,并且不同的BIO类型还有不同的控制函数,这里只简单介绍一些通用的BIO控制函数,至于某种类型BIO的特定控制函数,则参考后续的文件。 BIO的通用控制函数有以下几种,其声明如下(openssl/bio.h): long BIO_ctrl(BIO *bp,int cmd,long larg,void *parg);转载 2014-10-22 10:14:43 · 995 阅读 · 0 评论 -
openssl之BIO系列之5---CallBack函数及其控制
CallBack函数及其控制 通过前面的介绍大家已经知道,BIO的callback函数是非常重要的,是实现BIO多态性的一个关键因素之一,BIO提供的callback控制系列函数有五个,其实都是一些宏定义,下面是它的声明和定义(openssl/bio.h): #define BIO_set_callback(b,cb) ((b)->callback=(cb))转载 2014-10-22 10:12:17 · 582 阅读 · 0 评论 -
openssl之BIO系列之10---BIO链的定位操作
前面的一篇文章讲过BIO链的构造方法,这里讲的是在一个BIO链中,怎么查找一个特定的BIO,怎么遍历BIO链中的每一个BIO,这组函数定义如下(openssl/bio.h): BIO * BIO_find_type(BIO *b,int bio_type); BIO * BIO_next(BIO *b); #define BIO_method_typ转载 2014-10-22 10:27:43 · 424 阅读 · 0 评论 -
openssl之BIO系列之11---文件(file)类型BIO
前面我们已经介绍了很多BIO的基本构造和操作,现在,我们开始针对每一个类型BIO进行进一步的介绍,这些介绍都是基本基于openssl的帮助文档的,我尽可能加入自己的一些理解,理清思路。在开始这部分之前,我一直在想该从哪一种类型的BIO开始比较合适,因为这些BIO类型之间有些还是有相互联系的,比如BIO_s_bio型就和BIO_f_ssl有关系,最后,考虑到大家对文件操作都比较熟悉,而且该类型BIO转载 2014-10-22 10:32:10 · 2717 阅读 · 1 评论 -
ASN.1
ASN.1抽象语法标记(Abstract Syntax Notation One) ASN.1是一种 ISO/ITU-T 标准,描述了一种对数据进行表示、编码、传输和解码的数据格式。它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的应用程序。转载 2014-10-17 10:13:56 · 412 阅读 · 0 评论 -
linux上面ssl证书生成方法(转)
一般情况下,如果能找到可用的证书,就可以直接使用,只不过会因证书的某些信息不正确或与部署证书的主机不匹配而导致浏览器提示证书无效,但这并不影响使用。需要手工生成证书的情况有:找不到可用的证书需要配置双向SSL,但缺少客户端证书需要对证书作特别的定制首先,无论是在Linux下还是在Windows下的Cygwin中,进行下面的操作前都须确认已安装OpenSSL软件包。1转载 2014-10-20 16:17:10 · 848 阅读 · 0 评论 -
openssl 学习之SSL/TLS
之前在微博上看到一个分享,关于HTTPS的,原文链接The First Few Milliseconds of an HTTPS Connection,加上最近也在学习openssl 的相关知识。所以也进行简单的实验,并整理一些资料,以加深对SSL、TLS的了解。一,基本概念SSL是安全套接层(Secure Socket Layer)的缩写,而TLS表示传输层安全(Transport转载 2014-10-20 16:57:44 · 853 阅读 · 0 评论 -
OpenSSL API编程
相关代码:server端:#include "stdafx.h"#include winsock2.h> #include conio.h> #include stdio.h> #include "openssl/x509.h" #include "openssl/ssl.h" #include "openssl/err.h"转载 2014-10-20 17:05:23 · 794 阅读 · 0 评论 -
openssl之BIO系列之9---BIO对的创建和应用
BIO对是BIO中专门创建的一对缓存BIO,要创建BIO对,调用下面定义的函数(openssl/bio.h): int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); 这个函数调用成功后返回1,这时候bio1和bio2都是有效的了;否则就返回0,而bio1和bio2就会设转载 2014-10-22 10:25:09 · 510 阅读 · 0 评论