openssl框架闲谈--SSL实现

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);



 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1273626

上一篇:Vue | 路由守卫面试常考


下一篇:openresty 前端开发轻量级MVC框架封装二(渲染篇)