一种HTTP转HTTPS双向透明代理的方法和装置制造方法及图纸

技术编号:28848485 阅读:21 留言:0更新日期:2021-06-11 23:49
本发明专利技术涉及网络通信技术领域,提供了一种HTTP转HTTPS双向透明代理的方法和装置。方法包括代理系统收到客户端发送的第一HTTP请求后,解析HTTP头部字段,获得Host字段,把Host字段和内置的域名列表进行比对,并存储所述第一HTTP请求内容;其中,所述域名列表,用于存储满足HTTPS重定向的域名;若发现Host域名在列表中,代理系统向服务器发起目标端口为443的TCP握手,以便建立第一TCP通道和通过所述第一TCP通道进行TLS协商过程。本发明专利技术实现了一种不易出错的,精简的双向透明代理。

【技术实现步骤摘要】
一种HTTP转HTTPS双向透明代理的方法和装置
本专利技术涉及网络通信技
,特别是涉及一种HTTP转HTTPS双向透明代理的方法和装置。
技术介绍
随着网络环境的日益复杂,各种代理技术应运而生。从代理的协议层面可以划分为HTTP代理、SSL代理、FTP代理、邮件代理、TCP代理等;从代理服务器位置上,可以划分为正向代理和反向代理;从是否能被感知的角度可以分为透明代理和非透明代理。透明代理又可以分为客户端透明和服务器端透明,客户端透明就是指被代理的用户不需要做任何配置,自己的流量就会被动的接受代理,整个过程用户无感知;服务器端透明指的是,用户访问的目的服务器不会感觉到访问的流量是经过代理服务器的,服务器看到的IP地址是用户的IP地址,而不是中间代理服务器的IP地址。双向透明代理指的是终端用户以及服务器端都不会感受到代理服务器的存在,终端用户不需要做任何代理相关的配置,访问的目标IP也是服务器的真实IP地址,而不是代理服务器的IP;服务器端看到的访问IP地址也是真实的终端用户的IP地址,而不是代理服务器的IP地址。在整个的流量传输过程中,并不会出现中间代理服务器的IP地址,虽然流量经过了代理服务器的处理,但是双方都感知不到流量被代理了,这就是双向透明代理的含义所在。为了实现透明代理,首先需要用户访问服务器的流量要经过代理服务器,也就是说代理服务器部署的位置一定是在终端用户和服务器之间,而且能够访问到它们之间的通信流量。其次需要对报文的转发做一些特殊处理,默认情况下报文只会流向目的IP地址的节点,对于代理服务器来说,由于自身并不是用户要访问的服务器,报文虽然经过代理服务器,但是不会向应用层传递,应用层也没有对应的socket来处理。既然是做代理,那么必须要对报文的路由做一些控制,使本该转发给目标服务器的报文,继续向应用层传递,进而得到处理。另外一个关键的技术是要实现双向透明,即在整个通信过程中要隐藏代理服务器的IP地址,全程只出现终端用户的IP地址和服务器的IP地址。区分各种不同的透明代理服务器,核心就是要区分使用何种技术做的报文路由,使用何种技术实现的IP地址透明。传统的透明代理技术,主要有两种路线:第一种方法是通过修改报文IP地址的方式来实现透明;因为修改了目标IP地址,所以代理路由器的路由系统会把此报文路由到自身,而不是转发走,报文进而就会经过TCP/TP协议栈处理,到达应用层做代理。具体而言,对于到达代理服务器的报文,修改目的IP和目的端口为代理服务器的IP地址和socket端口;对于离开代理服务器的报文,把源IP和源端口从代理服务器的IP地址和端口根据连接的不同类型修改为客户端或者服务器的IP地址和端口。第二种方法是不做IP地址转换,而是使用Linux内核的Tproxy特性,Tproxy是透明代理的简称,它可以不对IP地址做任何变更,就可以实现双向透明代理。目前使用Tproxy技术实现的透明代理系统一般都是使用虚拟网桥设备来连接两个或者多个物理网卡,其中一个网卡是上行网口,接客户端流量;另外一个网卡是下行网口,接服务器端流量。透明代理系统,需要把应用层代理程序产生的报文投递到网络上,使用Linux网桥设备的透明代理系统,需要给网桥设备配置IP地址,并配置正确的网关地址和路由表,才能实现正确的报文转发。此时往往需要给网桥设备配置有一个IP地址来参与到基于IP地址的路由中来,在某些网络组网环境复杂的情况下,给网桥设备配置IP地址并配置相关的路由表,是非常繁琐的事情,而且很容易出错。鉴于此,克服该现有技术所存在的缺陷是本
亟待解决的问题。
技术实现思路
本专利技术要解决的技术问题是现有的透明代理系统,需要把应用层代理程序产生的报文投递到网络上,使用Linux网桥设备的透明代理系统,需要给网桥设备配置IP地址,并配置正确的网关地址和路由表,才能实现正确的报文转发。此时往往需要给网桥设备配置有一个IP地址来参与到基于IP地址的路由中来,在某些网络组网环境复杂的情况下,给网桥设备配置IP地址并配置相关的路由表,是非常繁琐的事情,而且很容易出错。本专利技术采用如下技术方案:第一方面,本专利技术提供了一种HTTP转HTTPS双向透明代理的方法,包括:代理系统收到客户端发送的第一HTTP请求后,解析HTTP头部字段,获得Host字段,把Host字段和内置的域名列表进行比对,并存储所述第一HTTP请求内容;其中,所述域名列表,用于存储满足HTTPS重定向的域名;若发现Host域名在列表中,代理系统向服务器发起目标端口为443的TCP握手,以便建立第一TCP通道和通过所述第一TCP通道进行TLS协商过程;其中,所述TCP握手中使用的客户端的IP地址;代理系统通过TLS协商建立的第一TLS通道,向服务器发送第一HTTPS请求;其中,所述第一HTTPS请求中携带所述第一HTTP请求内容经过加密后的内容;代理系统接收服务器返回的第一HTTPS响应,代理系统删除第一HTTPS响应的HTTP头部字段中cookie字段的secure属性,以及HSTS中包含的Strict-Transport-Security字段后,并将第一HTTPS响应内容解密为明文后,透传给客户端。优选的,若发现Host域名不在列表中,所述方法还包括:代理系统向服务器发起目标端口为80的TCP握手,以便建立第二TCP通道;代理系统通过所述第二TCP通道,向服务器发送第二HTTP请求,所述第二HTTP请求中携带所述第一HTTP请求内容;代理系统接收服务器返回的第二HTTP响应,并检查所述第二HTTP响应是否是HTTPS重定向;若发现是HTTPS重定向,则代理系统把Host加入域名列表中,并丢弃掉所述第二HTTP响应,同时向服务器发送TCPReset报文,关闭所述第一TCP通道。优选的,所述方法还包括:代理系统向服务器发起目标端口为443的TCP握手,以便建立第二TCP通道和通过所述第二TCP通道进行TLS协商过程;其中,所述TCP握手中使用的客户端的IP地址;代理系统通过TLS协商建立的第二TLS通道,向服务器发送第二HTTPS请求;其中,所述第二HTTPS请求中携带所述第二HTTP请求内容经过加密后的内容;代理系统接收服务器返回的第二HTTPS响应,代理系统删除第二HTTPS响应的HTTP头部字段中cookie字段的secure属性,以及HSTS中包含的Strict-Transport-Security字段后,并将第二HTTPS响应内容解密为明文后,透传给客户端。优选的,检查所述第二HTTP响应是否是HTTPS重定向,具体包括:检查所述第二HTTP响应的状态码是否在300~399之间,并且,检查重定向的目标地址是原来Host的HTTPS版本;其中,根据HTTP协议规范,此区间的响应状态码表示重定向。优选的,若发现不是HTTPS重定向,所述方法还包括:代理系统将接收到的第二HTTP响应透传给所述客户端本文档来自技高网
...

【技术保护点】
1.一种HTTP转HTTPS双向透明代理的方法,其特征在于,包括:/n代理系统收到客户端发送的第一HTTP请求后,解析HTTP头部字段,获得Host字段,把Host字段和内置的域名列表进行比对,并存储所述第一HTTP请求内容;其中,所述域名列表,用于存储满足HTTPS重定向的域名;/n若发现Host域名在列表中,代理系统向服务器发起目标端口为443的TCP握手,以便建立第一TCP通道和通过所述第一TCP通道进行TLS协商过程;其中,所述TCP握手中使用的客户端的IP地址;/n代理系统通过TLS协商建立的第一TLS通道,向服务器发送第一HTTPS请求;其中,所述第一HTTPS请求中携带所述第一HTTP请求内容经过加密后的内容;/n代理系统接收服务器返回的第一HTTPS响应,代理系统删除第一HTTPS响应的HTTP头部字段中cookie字段的secure属性,以及HSTS中包含的Strict-Transport-Security字段后,并将第一HTTPS响应内容解密为明文后,透传给客户端。/n

【技术特征摘要】
1.一种HTTP转HTTPS双向透明代理的方法,其特征在于,包括:
代理系统收到客户端发送的第一HTTP请求后,解析HTTP头部字段,获得Host字段,把Host字段和内置的域名列表进行比对,并存储所述第一HTTP请求内容;其中,所述域名列表,用于存储满足HTTPS重定向的域名;
若发现Host域名在列表中,代理系统向服务器发起目标端口为443的TCP握手,以便建立第一TCP通道和通过所述第一TCP通道进行TLS协商过程;其中,所述TCP握手中使用的客户端的IP地址;
代理系统通过TLS协商建立的第一TLS通道,向服务器发送第一HTTPS请求;其中,所述第一HTTPS请求中携带所述第一HTTP请求内容经过加密后的内容;
代理系统接收服务器返回的第一HTTPS响应,代理系统删除第一HTTPS响应的HTTP头部字段中cookie字段的secure属性,以及HSTS中包含的Strict-Transport-Security字段后,并将第一HTTPS响应内容解密为明文后,透传给客户端。


2.根据权利要求1所述的HTTP转HTTPS双向透明代理的方法,其特征在于,若发现Host域名不在列表中,所述方法还包括:
代理系统向服务器发起目标端口为80的TCP握手,以便建立第二TCP通道;
代理系统通过所述第二TCP通道,向服务器发送第二HTTP请求,所述第二HTTP请求中携带所述第一HTTP请求内容;
代理系统接收服务器返回的第二HTTP响应,并检查所述第二HTTP响应是否是HTTPS重定向;
若发现是HTTPS重定向,则代理系统把Host加入域名列表中,并丢弃掉所述第二HTTP响应,同时向服务器发送TCPReset报文,关闭所述第一TCP通道。


3.根据权利要求2所述的HTTP转HTTPS双向透明代理的方法,其特征在于,所述方法还包括:
代理系统向服务器发起目标端口为443的TCP握手,以便建立第二TCP通道和通过所述第二TCP通道进行TLS协商过程;其中,所述TCP握手中使用的客户端的IP地址;
代理系统通过TLS协商建立的第二TLS通道,向服务器发送第二HTTPS请求;其中,所述第二HTTPS请求中携带所述第二HTTP请求内容经过加密后的内容;
代理系统接收服务器返回的第二HTTPS响应,代理系统删除第二HTTPS响应的HTTP头部字段中cookie字段的secure属性,以及HSTS中包含的Strict-Transport-Security字段后,并将第二HTTPS响应内容解密为明文后,透传给客户端。


4.根据权利要求2所述的HTTP转HTTPS双向透明代理的方法,其特征在于,检查所述第二HTTP响应是否是HTTPS重定向,具体包括:
检查所述第二HTTP响应的状态码是否在300~399之间,并且,检查重定向的目标地址是原来Host的HTTPS版本;其中,根据HTTP协议规范,此区间的响应状态码表示重定向。


5.根据权利要求2所述的HTTP转HTTPS双向透明代理的方法,其特征在于,若发现不是HTTPS重定向,所述方法还包括:
代理系统将接收到的第二HTTP响应透传给所述客户端。


6.根据权利要求1-5任一所述的HTTP转HTTPS双向透明代理的方法,其特征在于,代理系统包括:数据包收发模块、虚拟网卡模块、数据包路...

【专利技术属性】
技术研发人员:王赟侯贺明程波
申请(专利权)人:武汉绿色网络信息服务有限责任公司
类型:发明
国别省市:湖北;42

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

1