openssl框架闲谈--SSL实现
2010-02-09 21:29
190 查看
BIO 和EVP的一个应用就是SSL,没有SSL这个应用,BIO或者EVP只不过是一些底层的支撑接口,没有任何的现实意义,正是SSL使用了BIO和EVP 的机制提供了一个已经成型的安全套接字的实现策略。其实想象一下,安全套接字有两层含义,一层就是安全,这个由EVP接口实现了,另外一层含义就是套接 字,也就是说它必须是一个套接字,必须在操作的网络协议栈上进行IO,这一层含义是在BIO接口体现的,这个意义上,SSL正是通过组合BIO和EVP来 实现安全套接字的,BIO除了提供底层的抽象接口之外并不和SSL存在别的方面的耦合,因此BIO可以单独被使用,同样的,EVP也是可以单独被使用的。
不过,继续我们美妙的旅程之前首先要说的一点是,SSL本身就是一个BIO类型,并且是属于过滤类型的,在它的下层必须有一个socket类型的源/目的类型的BIO,在openssl中自带的sconnect实例中体现了这一点,创建过程如下:
SSL_load_error_strings();
OpenSSL_add_ssl_algorithms();
ssl_ctx=SSL_CTX_new(SSLv23_client_method());
ssl=SSL_new(ssl_ctx);
SSL_set_connect_state(ssl);
ssl_bio=BIO_new(BIO_f_ssl());
BIO_set_ssl(ssl_bio,ssl,BIO_CLOSE);
out=BIO_new(BIO_s_connect());
BIO_set_conn_hostname(out,host);
BIO_set_nbio(out,1);
out=BIO_push(ssl_bio,out);本文出自 “我来,我看,我征服” 博客,请务必保留此出处http://dog250.blog.51cto.com/2466061/1273626
不过,继续我们美妙的旅程之前首先要说的一点是,SSL本身就是一个BIO类型,并且是属于过滤类型的,在它的下层必须有一个socket类型的源/目的类型的BIO,在openssl中自带的sconnect实例中体现了这一点,创建过程如下:
SSL_load_error_strings();
OpenSSL_add_ssl_algorithms();
ssl_ctx=SSL_CTX_new(SSLv23_client_method());
ssl=SSL_new(ssl_ctx);
SSL_set_connect_state(ssl);
ssl_bio=BIO_new(BIO_f_ssl());
BIO_set_ssl(ssl_bio,ssl,BIO_CLOSE);
out=BIO_new(BIO_s_connect());
BIO_set_conn_hostname(out,host);
BIO_set_nbio(out,1);
out=BIO_push(ssl_bio,out);本文出自 “我来,我看,我征服” 博客,请务必保留此出处http://dog250.blog.51cto.com/2466061/1273626
相关文章推荐
- openssl框架闲谈--SSL实现
- OpenSSL之SSL协议的Web安全实现
- openssl框架闲谈--EVP加密/解密接口(附:加密)
- openssl框架闲谈--BIO接口
- 原来win+apache实现ssl的证书认证如此简单 +使用openssl来生成CA证书、申请证书、颁发证书以及撤销证书的过程
- 基于boost asio实现的支持ssl的通用socket框架
- openssl框架闲谈--BIO接口
- SSL/TLS 卸载(offloading/termination) -- C语言 + openssl 实现
- openssl框架闲谈--BIO接口
- 利用openssl实现SSL安全通讯协议(一)
- openssl框架闲谈--EVP加密/解密接口(附:加密)
- 基于boost asio实现的支持ssl的通用socket框架
- 利用openssl实现SSL安全通讯协议(二)
- 基于X.509证书和SSL协议的身份认证过程实现(OpenSSL可以自己产生证书,有TCP通过SSL进行实际安全通讯的实际编程代码)good
- SSL及使用openssl实现CA
- 通过Openssl提供FTP+SSL/TLS认证功能,并实现安全数据传输
- openssl框架闲谈--总论(一)
- 31.openssl编程——SSL实现
- openssl框架闲谈--总论
- 使用pthread库实现openssl多线程ssl服务端和客户端