CN108156224B - 基于tls协议sni机制实现自定义代理隧道协议的方法 - Google Patents
基于tls协议sni机制实现自定义代理隧道协议的方法 Download PDFInfo
- Publication number
- CN108156224B CN108156224B CN201711342433.5A CN201711342433A CN108156224B CN 108156224 B CN108156224 B CN 108156224B CN 201711342433 A CN201711342433 A CN 201711342433A CN 108156224 B CN108156224 B CN 108156224B
- Authority
- CN
- China
- Prior art keywords
- server
- protocol
- request
- client
- proxy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2592—Translation of Internet protocol [IP] addresses using tunnelling or encapsulation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/326—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开的基于TLS协议SNI机制实现自定义代理隧道协议的方法,包括以下步骤:1)客户端向代理服务端发送握手请求要求SSL握手,并通过服务器扩展项来指明真实服务器地址及协议类型;2)代理服务端对服务器扩展项进行解析,并对解析结果的类型进行检测,若符合要求,则将该连接打上标记,并将解析结果进行存储;3)客户端向代理服务端发起HTTP业务请求;4)代理服务端检测该HTTP业务请求所在的连接是否存在标记,若存在,则对访问目标进行修改,将解析结果与当前请求的路径地址进行拼接得到真实的服务地址。本发明实现基于TLS协议SNI机制,解决了原有自定义代理隧道协议带来协议复杂性问题。
Description
技术领域
本发明涉及网络通讯协议技术领域,尤其涉及一种基于TLS协议SNI机制实现自定义代理隧道协议的方法。
背景技术
在WEB世界中,代理技术被广泛使用,其中正向代理便是代理技术中的一种,所谓正向代理是指代理服务器位于客户端和真实服务器之间,为了从原始服务器获取内容,客户端向代理服务器发送请求并指定真实服务器地址,然后由代理服务器向真实服务器转发请求并将获取的响应内容返回给客户端。然而使用正向代理要求客户端必须显式设置代理服务器地址,从用户使用角度而言,较为不便。
透明正向代理可以解决上述问题,透明正向代理可以根据预先定义的策略,由代理服务器对客户端请求地址进行改写来得到真实服务器地址。因此,客户端根本不需要知道代理服务器的存在,所以也就避免进行显式设置的烦琐。
而在实现具备HTTPS功能的透明正向代理时,预先定义的策略要求SSL客户端能够通知代理服务器最终所需连接的真实服务器地址。传统的方法是实现一种基于HTTP的自定义代理隧道协议(TUNNEL协议),在SSL握手开始之前(也即ClientHello之前)进行通讯,其流程具体为:参见图1,首先SSL客户端向SSL服务端发送TUNNEL请求,SSL服务端接收到TUNNEL请求后响应,并将TUNNEL响应返回给SSL客户端;接着,SSL客户端向SSL服务端发送ClientHello,SSL服务端接收到ClientHello后进行响应,将ServerHello返回给SSL客户端;最后,SSL客户端与SSL服务端之间进行后续的SSL握手过程。然而,这种实现方式强行在TCP握手和SSL握手之间插入了非标准的自定义协议类型,进一步增加了协议复杂性。而协议复杂性的增加,不仅给编写无bug代码增加了难度,而且容易导致用户和后期维护者产生困惑。同时,由于增加了问题排查涉及面,也不利于使用过程中问题的排查。因此,对这种自定义代理隧道协议实现方式的改进是非常必要的。
TLS协议于2006年引入了Server Name Indication(SNI)机制,用于解决以下问题:SSL客户端向SSL服务器发出的ClientHello请求中并不包含服务器的域名,这种情况下一台SSL服务器只能使用一张站点证书,对外只能提供一个网站服务。否则,SSL服务器会分不清应该向SSL客户端提供哪一个网站的数字证书。但这对于使用虚拟主机的用户来说很不方便。比如:一台服务器中有两个虚拟主机,分别是alipay.com和baidu.com,若SSL客户端不能指明要访问的主机名,则服务器无法判断应该回复支付宝证书还是百度证书。通过SNI机制,SSL客户端可以在ClientHello请求中通过ServerName扩展项来指明所要连接的服务器的HostName。也就是说通过ServerName这个扩展项,可以让服务器在众多虚拟主机中找到各自对应的站点证书。
对于客户端告知代理服务器所需访问的真实服务器地址的需求,SNI机制已具雏形。但标准的ServerName值类型为HostName,默认只能根据HostName在多台服务器间进行区分。而对代理服务器来说,若要使用SNI机制作为客户端通告代理服务器所需访问真实地址的手段,还需要解决以下问题:
1、支持多种协议类型,代理服务器不仅仅是http代理,对于其他代理类型也要提供代理支持;
2、支持非默认的协议端口号,由于网络安全和端口号资源被占用等原因,相当一部分的应用服务器在对外提供服务时使用了非默认的协议端口号。
为此,申请人进行了有益的探索和尝试,找到了解决上述问题的办法,下面将要介绍的技术方案便是在这种背景下产生的。
发明内容
本发明所要解决的技术问题:提供一种基于TLS协议SNI机制实现自定义代理隧道协议的方法。
本发明所解决的技术问题可以采用以下技术方案来实现:
基于TLS协议SNI机制实现自定义代理隧道协议的方法,包括以下步骤:
1)客户端向代理服务端发送握手请求要求SSL握手,并通过服务器扩展项来指明最终要连接的真实服务器地址及要使用的协议类型;
2)代理服务端接收到客户端发送过来的握手请求后,对服务器扩展项进行解析,并对解析结果的类型进行检测,若检测到解析结果的类型符合要求,则将该客户端与代理服务端之间所形成的连接打上标记,并将解析结果进行存储;
3)客户端在SSL握手完成后在该连接上向代理服务端发起HTTP业务请求;
4)代理服务端在处理客户端HTTP业务请求时,检测该HTTP业务请求所在的连接是否存在标记,若检测到连接存在标记,则对访问目标进行修改,将先前从服务器扩展项解析并存储的解析结果与当前请求的路径地址进行拼接得到真实的服务地址。
由于采用了如上的技术方案,本发明的有益效果在于:
1、实现基于TLS协议SNI机制,解决了原有自定义代理隧道协议带来协议复杂性问题;
2、重新定义了ServerName值类型,允许代理服务器对多种协议类型和非默认端口提供支持。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有的基于HTTP的自定义代理隧道协议在SSL握手开始之前进行通讯的流程图。
图2是本发明的流程图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
HTTPS建立在SSL/TLS协议的基础上,它要求客户端与代理服务端建立起TCP连接以后,由客户端向代理服务端发起SSL握手,SSL握手完成后才能发送HTTP数据请求。在此过程中,可使用TLS协议SNI机制实现SSL客户端通知代理服务器最终所需连接的真实服务器地址的功能。
参见图2,本发明的基于TLS协议SNI机制实现自定义代理隧道协议的方法,包括以下步骤:
1)客户端向代理服务端发起握手请求,例如ClientHello消息要求SSL握手,客户端通过ServerName扩展项来指明最终要连接的真实服务器地址及要使用的协议类型,其形式为:ServerName:scheme://host:port;
2)代理服务端收到客户端发送过来的ClientHello消息后,通过SSL_CTX_set_tlsext_servername_callback回调指令对ServerName扩展项进行解析,并对解析结果的类型进行检测,即检测ServerName值类型是否为scheme://host:port,若判定为是,则将客户端与代理服务端之间所形成的连接打上标记A,并存储解析结果,即存储scheme、host、port信息;
3)客户端在SSL握手完成后在该连接上向代理服务端发起HTTP业务请求;
4)代理服务端在处理客户端HTTP业务请求时,检测该HTTP业务请求所在的连接是否存在标记A,若检测到连接存在标记A,则对访问目标进行修改,将先前从ServerName解析并存储的scheme、host、port信息与当前请求的路径地址request_path进行拼接得到真实的服务地址,形式如:scheme://host:port/path。
至此,代理服务端已经找到了客户端要访问的真实服务器地址及要使用的协议类型,代理服务器后续向真实服务器转发请求并将响应内容返回给客户端。从而在TLS协议SNI机制的基础上,实现了SSL客户端通告代理服务端最终所需连接的真实服务器地址的目的。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (1)
1.基于TLS协议SNI机制实现自定义代理隧道协议的方法,其特征在于,包括以下步骤:
1)客户端向代理服务端发送握手请求要求SSL握手,并通过服务器扩展项来指明最终要连接的真实服务器地址及要使用的协议类型;
2)代理服务端接收到客户端发送过来的握手请求后,对服务器扩展项进行解析,并对解析结果的类型进行检测,若检测到解析结果的类型符合要求,则将该客户端与代理服务端之间所形成的连接打上标记,并将解析结果进行存储;
3)客户端在SSL握手完成后在该连接上向代理服务端发起HTTP业务请求;
4)代理服务端在处理客户端HTTP业务请求时,检测该HTTP业务请求所在的连接是否存在标记,若检测到连接存在标记,则对访问目标进行修改,将先前从服务器扩展项解析并存储的解析结果与当前请求的路径地址进行拼接得到真实的服务地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711342433.5A CN108156224B (zh) | 2017-12-14 | 2017-12-14 | 基于tls协议sni机制实现自定义代理隧道协议的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711342433.5A CN108156224B (zh) | 2017-12-14 | 2017-12-14 | 基于tls协议sni机制实现自定义代理隧道协议的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108156224A CN108156224A (zh) | 2018-06-12 |
CN108156224B true CN108156224B (zh) | 2020-11-13 |
Family
ID=62467271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711342433.5A Active CN108156224B (zh) | 2017-12-14 | 2017-12-14 | 基于tls协议sni机制实现自定义代理隧道协议的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108156224B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109040040B (zh) * | 2018-07-20 | 2021-07-27 | 网易(杭州)网络有限公司 | 一种信息的发送方法、装置、存储介质及电子装置 |
CN111490985B (zh) * | 2020-04-03 | 2022-02-25 | 成都安恒信息技术有限公司 | 一种ssl vpn多服务地址共享系统及共享方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103491065A (zh) * | 2012-06-14 | 2014-01-01 | 中兴通讯股份有限公司 | 一种透明代理及其实现方法 |
CN104980419A (zh) * | 2014-09-11 | 2015-10-14 | 腾讯科技(深圳)有限公司 | 一种代理通信方法及装置 |
CN105634904A (zh) * | 2016-01-19 | 2016-06-01 | 深圳前海达闼云端智能科技有限公司 | 一种sslvpn的代理方法、服务器以及客户端及其处理方法 |
US9419942B1 (en) * | 2013-06-05 | 2016-08-16 | Palo Alto Networks, Inc. | Destination domain extraction for secure protocols |
CN106936796A (zh) * | 2015-12-30 | 2017-07-07 | 华耀(中国)科技有限公司 | 一种基于sni的服务器负载均衡方法及设备 |
CN107135190A (zh) * | 2016-02-29 | 2017-09-05 | 阿里巴巴集团控股有限公司 | 基于传输层安全连接的数据流量归属识别方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102571198B (zh) * | 2011-12-31 | 2015-02-04 | 武汉烽火网络有限责任公司 | 基于仿真onu进行epon性能测试的系统及测试方法 |
US8738902B2 (en) * | 2012-01-27 | 2014-05-27 | Microsoft Corporation | Implicit SSL certificate management without server name indication (SNI) |
US10305871B2 (en) * | 2015-12-09 | 2019-05-28 | Cloudflare, Inc. | Dynamically serving digital certificates based on secure session properties |
CN107241428B (zh) * | 2017-06-30 | 2019-11-26 | 北京百度网讯科技有限公司 | 一种在基于容器的共享虚拟主机中实现https的方法和装置 |
-
2017
- 2017-12-14 CN CN201711342433.5A patent/CN108156224B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103491065A (zh) * | 2012-06-14 | 2014-01-01 | 中兴通讯股份有限公司 | 一种透明代理及其实现方法 |
US9419942B1 (en) * | 2013-06-05 | 2016-08-16 | Palo Alto Networks, Inc. | Destination domain extraction for secure protocols |
CN104980419A (zh) * | 2014-09-11 | 2015-10-14 | 腾讯科技(深圳)有限公司 | 一种代理通信方法及装置 |
CN106936796A (zh) * | 2015-12-30 | 2017-07-07 | 华耀(中国)科技有限公司 | 一种基于sni的服务器负载均衡方法及设备 |
CN105634904A (zh) * | 2016-01-19 | 2016-06-01 | 深圳前海达闼云端智能科技有限公司 | 一种sslvpn的代理方法、服务器以及客户端及其处理方法 |
CN107135190A (zh) * | 2016-02-29 | 2017-09-05 | 阿里巴巴集团控股有限公司 | 基于传输层安全连接的数据流量归属识别方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108156224A (zh) | 2018-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7788383B2 (en) | Communicating a selection of a potential configuration | |
US20170272470A1 (en) | Systems and methods for intelligent transport layer security | |
CN106850324B (zh) | 虚拟网络接口对象 | |
CA3010741C (en) | Method and system for automatically bypassing network proxies in the presence of interdependent traffic flows | |
EP2262185A1 (en) | Method and system for forwarding data among private networks | |
US11196833B1 (en) | Proxy server synchronizer | |
EP2343914A1 (en) | Method, device and corresponding system for message processing | |
JP2006101513A (ja) | Ipネットワークにおいて、あらゆるタイプのアプリケーションでネットワーク・アドレス変換(nat)を用いる方法、システム及びコンピュータ・プログラム | |
JP2012138901A (ja) | リレーサーバを利用したデータ伝送システム及び方法 | |
US20180337886A1 (en) | Upgrading to direct connection for servers behind a network address translation device | |
CN108156224B (zh) | 基于tls协议sni机制实现自定义代理隧道协议的方法 | |
EP3668043A1 (en) | Method for identifying encrypted data stream, device, storage medium, and system | |
CN110417632B (zh) | 一种网络通信方法、系统及服务器 | |
US11671410B2 (en) | Providing enrichment information using hypertext transfer protocol secure (HTTPS) | |
EP1950917A1 (en) | Methods for peer-to-peer application message identifying and operating realization and their corresponding devices | |
US10462265B2 (en) | On-demand startup of offline servers and connection routing | |
CN109150844B (zh) | 确定数字证书的方法、装置和系统 | |
EP3468152B1 (en) | Two-way transparent proxy method and system | |
CN114095415A (zh) | 路由确定方法、装置、网关设备和存储介质 | |
US11038994B2 (en) | Technique for transport protocol selection and setup of a connection between a client and a server | |
US10375175B2 (en) | Method and apparatus for terminal application accessing NAS | |
US20210226815A1 (en) | Communications bridge | |
JP6605149B2 (ja) | 共有端末の検出方法及びその装置 | |
TWI337023B (en) | Method for analyzing network environment | |
CN114157639A (zh) | 服务器智能网卡信息采集的方法、装置、设备及可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 200436 Room 601, Lane 299, Lane 299, JIANGCHANG West Road, Jingan District, Shanghai Applicant after: Geer software Limited by Share Ltd Address before: 200436 Room 601, Lane 299, Lane 299, JIANGCHANG West Road, Jingan District, Shanghai Applicant before: Geer Software Co., Ltd., Shanghai |
|
GR01 | Patent grant | ||
GR01 | Patent grant |