一种高性能的SSL代理装置及其方法制造方法及图纸

技术编号:11637426 阅读:120 留言:0更新日期:2015-06-24 12:01
本发明专利技术提供一种高性能的SSL代理装置,其作为WEB服务软件应用于服务器。用户端连接模块,用于接收用户访问并同用户端进行协商,建立用户端SSL连接。后台处理模块,用于接收用户的资源操作请求并同后台资源服务器进行协商,建立后台资源服务器连接,并根据用户的资源操作请求,进行用户端和后台资源服务器的读写数据操作。所述用户端连接模块和所述后台处理模块分别位于同一进程的两个线程中。本发明专利技术可以充分利用SSL加密卡处理芯片的特性来提高数据处理的性能,使其能够在高压力工作时更加稳定。

【技术实现步骤摘要】

本专利技术涉及网络安全领域,尤其涉及一种高性能的SSL代理装置及其方法
技术介绍
伴随着网络技术的发展,人们的生活越来越多的与网络息息相关,例如娱乐消遣、查阅资料、购物支付、网上缴费、看病挂号等等。爆发式增长的网络用户,海量的个人信息存在于网络中。对于个人信息,每个人都是敏感的,去年国内几大网站相继曝出用户信息泄露,更是触动着用户的神经。为了增加安全性,越来越多的网站增加超文本传输安全协议(HTTPS)的应用。HTTPS协议很早就被用于网络通讯中,由于HTTPS的安全隧道建立会非常消耗CPU资源,现在只广泛用于网络上安全敏感的通讯,例如支付方面。由于网络安全问题频频曝出,也让用户越来越关心,越来越多的网站在用户注册登录的交互过程中使用HTTPS协议。但由于服务器性能和用户体验的考虑,很少有网络公司全部支持HTTPS访问。性能瓶颈就存在于用户与服务器交互时,WEB服务软件在建立SSL隧道是严重消耗服务器的CPU资源的,对于现在网站庞大的用户量,服务器要处理庞大的用户访问,处理性能捉襟见肘,所以SSL加密卡的应用开始需求大增。由于SSL加密卡具有独立SSL处理芯片,可以解放服务器CPU的资源用于处理其他事务,可以显著提高HTTPS的处理性能。SSL加密卡一般像独立显卡一样安装在主板PCI插槽上。但是如果想充分发挥SSL加密卡的性能,要充分了解SSL加密卡处理芯片及驱动的特性,并针对其特性设计优化应用层软件的处理结构。目前现有技术采用WEB服务软件来配合SSL加密卡来完成SSL的加解密并进行数据的读写。参看图1,现有的WEB服务软件采用的是多进程结合epoll非阻塞10网络模型的方式,此类WEB服务软件在用户端和资源服务器之间扮演一个SSL代理的角色,其主要处理过程的步骤如下:步骤一、初始化SSL环境配置和套接字并设置属性,开启监听;步骤二、创建子进程,初始化epoll结构,添加待处理事件,等待事件触发;步骤三、用户访问时,触发epoll事件,返回用户的套接字,处理与用户和后台资源服务器的SSL协商操作并分别建立和用户的SSL连接以及和后台资源服务器的SSL连接,然后将用户套接字加入epoll事件监听队列,处理后续用户请求;步骤四、接收用户的资源操作请求并进行用户端和后台资源服务器的读写数据操作;步骤五、用户完成访问,SSL代理程序关闭连接,回收资源。其中步骤三的详细处理流程如下:步骤三? 1、SSL代理进程收到用户请求;步骤三.2、获取用户的套接字;步骤三.3、与用户端建立SSL连接,再与后台资源服务器建立SSL连接(此应用情景中,与后台资源服务器连接也需要SSL保护),此时SSL代理进程已经在用户和后台资源间建立了双向的SSL隧道。其中步骤三的详细处理流程如下:等待处理用户请求资源,通过SSL_read()和SSL_Write()在用户端和后台服务器端读写数据。所述现有技术的SSL服务软件采用非阻塞的epoll模型结合多进程模式。但是现有技术的SSL服务软件,因为处理与用户端和后台服务器的SSL连接、用户与后台服务器数据读写在同一个epoll循环中,互相影响使程序执行不够高效,所以有不少可以优化的空间。在高负荷情况下,由于进程既要处理双向SSL连接的协商,还要处理双向数据的读写,SSL协商过程又是很耗时的过程,会影响读写数据的速率,读写数据量如果很大的话,又对新建连接速度产生影响,不够高效。另外,参看图2,目前现有的SSL加密卡处理芯片有如下特性:SSL加密卡有N个加解密处理核心,N通常为64。SSL加密卡设有数据处理队列,处理队列缓冲器为2048个,SSL加密卡的处理流程步骤如下:步骤一、获取从用户端发送到内核的待加解密的数据;步骤二、将待处理数据起始和结束地址、处理命令、处理完数据存放地址,状态标志位填充到处理队列缓冲器中;步骤三、执行驱动程序中数据处理函数,将缓冲器作为函数的参数传入;步骤四、函数处理完成返回,用户端根据系统状态去读取处理完的数据。经过我们实测的数据,当队列里面有I个待处理数据的情况,处理时间为20us ;队列有2000个待处理数据时,执行数据处理函数后,函数会将buffer平分到64个处理核同时处理,处理时间大约为625us。就是说当要处理2000个数据,每次处理一个,需要20*2000us ;2000个数据同时放入缓冲器处理只需要625us。由此可知,现有的SSL加密卡每次执行数据处理函数时,队列里面有2000个数据同时处理和只有一个数据单独进行处理,处理的效率有很大提升。因此,现有技术的SSL服务软件存在创建双向SSL连接耗费大量时间并影响读写数据速率,而数据读写量大的时候也对创建新的SSL连接造成影响的问题。并且现有技术的SSL服务软件未考虑SSL加密卡处理芯片的特性,仍存在很大的改进空间。
技术实现思路
有鉴于此,本专利技术的目的是提供一种高性能的SSL代理装置及其方法,以充分利用SSL加密卡处理芯片的特性来提高数据处理的性能,使其能够在高压力工作时更加稳定。为实现上述目的,本专利技术提供技术方案如下:一种高性能的SSL代理装置,其作为WEB服务软件应用于服务器。包括:用户端连接模块,用于接收用户访问并同用户端进行协商,建立用户端SSL连接。后台处理模块,用于接收用户的资源操作请求并同后台资源服务器进行协商,建立后台资源服务器连接,并根据用户的资源操作请求,进行用户端和后台资源服务器的读写数据操作。所述用户端连接模块和所述后台处理模块分别位于同一进程的两个线程中。 所述后台处理模块建立和后台资源服务器连接为建立和后台资源服务器SSL连接。所述用户端连接模块和所述后台处理模块分别采用各自的epoll模型。所述印oil模型可以为阻塞的印oil结构或者非阻塞的印oil结构。所述用户端连接模块包括:初始化单元,用于进行epoll初始化;套接字返回单元,用于在用户访问触发epoll事件时,返回用户套接字;SSL协商单元,用于和用户端进行SSL协商,建立SSL连接;线程处理单元一,用于将用户的套接字和SSL结构体添加到线程处理块结构体数组中并初始化线程处理块结构体数组中的相关值;监听队列加入单元一,将用户的套接字加入线程中的epoll事件监听队列。所述后台处理模块包括:epoll等待单元,用于在接收到用户的资源操作请求后,线程等待事件的触发;SSL连接单元,用于根据与后台资源服务器建立连接的状态值与后台资源服务器协商,建立SSL连接;线程处理单元二,用于将与后台资源服务器连接的套接字和SSL结构体加入线程处理块结构体数组中并初始化线程处理块结构体数组中的相关值;监听队列加入单元二,将后台资源服务器的套接字加入线程中的epoll事件监听队列。所述后台处理模块还包括:操作处理单元,用于线程的印oil事件触发后根据用户的资源操作请求,进行用户端和后台资源服务器的读写数据操作。所述操作处理单元完成用户端和后台资源当前第1页1 2 3 本文档来自技高网
...

【技术保护点】
一种高性能的SSL代理装置,其作为WEB服务软件应用于服务器,其特征在于,包括:用户端连接模块,用于接收用户访问并同用户端进行协商,建立用户端SSL连接;后台处理模块,用于接收用户的资源操作请求并同后台资源服务器进行协商,建立后台资源服务器连接,并根据用户的资源操作请求,进行用户端和后台资源服务器的读写数据操作;所述用户端连接模块和所述后台处理模块分别位于同一进程的两个线程中。

【技术特征摘要】

【专利技术属性】
技术研发人员:云晓春朱海龙王东安王博吴震韩冰何瑞普
申请(专利权)人:国家计算机网络与信息安全管理中心杭州迪普科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1