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

相关文章
|
4月前
|
应用服务中间件 Linux 网络安全
Linux【脚本 06】HTTPS转发HTTP安装OpenSSL、Nginx(with-http_ssl_module)及自签名的X.509数字证书生成(一键部署生成脚本分享)
Linux【脚本 06】HTTPS转发HTTP安装OpenSSL、Nginx(with-http_ssl_module)及自签名的X.509数字证书生成(一键部署生成脚本分享)
65 1
|
3月前
|
网络安全 开发工具 git
解决 OpenSSL SSL_read: Connection was reset, errno 10054的问题
解决 OpenSSL SSL_read: Connection was reset, errno 10054的问题
|
4月前
【Error】fatal: unable to access ‘https://github.com/PanJiaChen/vue-element-admin/‘: OpenSSL SSL_read:
【Error】fatal: unable to access ‘https://github.com/PanJiaChen/vue-element-admin/‘: OpenSSL SSL_read:
|
5月前
|
网络安全
20.8 OpenSSL 套接字SSL传输文件
有了上面的基础那么传输文件的实现就变得简单了,在传输时通常我们需要打开文件,并每次读入`1024`个字节的数据包,通过`SSL`加密传输即可,此处的文件传输功能在原生套接字章节中也进行过详细讲解,此处我们还是使用原来的密钥对,实现一个服务端等待客户端上传,当客户端连接到服务端后则开始传输文件,服务端接收文件的功能。
34 0
20.8 OpenSSL 套接字SSL传输文件
|
5月前
|
开发工具 git
OpenSSL SSL_connect: Connection was reset in connection to github.com:443
OpenSSL SSL_connect: Connection was reset in connection to github.com:443
|
6月前
|
缓存 Shell 网络安全
Github-推送代码报错“error:RPC failed;curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL,errno 10054”解决方案
Github-推送代码报错“error:RPC failed;curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL,errno 10054”解决方案
104 0
|
8月前
|
安全 网络协议 Shell
iOS 逆向编程(六) SSH、OpenSSH、SSL、OpenSSL 简介与关系
iOS 逆向编程(六) SSH、OpenSSH、SSL、OpenSSL 简介与关系
179 0
|
10月前
|
安全 JavaScript 网络安全
错误:写入 EPROTO 3928:错误:1408F10B:SSL 例程:ssl3_get_record:错误版本号:c:\ws\deps\openssl\openssl\ssl\record\ssl3_record.c:332 #71
错误:写入 EPROTO 3928:错误:1408F10B:SSL 例程:ssl3_get_record:错误版本号:c:\ws\deps\openssl\openssl\ssl\record\ssl3_record.c:332 #71
157 0
|
11月前
解决OpenSSL SSL_read: Connection was reset, errno 10054
解决OpenSSL SSL_read: Connection was reset, errno 10054
265 0
|
11月前
|
开发工具 git
【git】解决OpenSSL SSL_read: Connection was reset, errno 10054 ...
【git】解决OpenSSL SSL_read: Connection was reset, errno 10054 ...
204 0