CN111448788B - 用于基于saas的应用的ssl优化的跟踪ssl会话状态的方法 - Google Patents

用于基于saas的应用的ssl优化的跟踪ssl会话状态的方法 Download PDF

Info

Publication number
CN111448788B
CN111448788B CN201880079753.2A CN201880079753A CN111448788B CN 111448788 B CN111448788 B CN 111448788B CN 201880079753 A CN201880079753 A CN 201880079753A CN 111448788 B CN111448788 B CN 111448788B
Authority
CN
China
Prior art keywords
client
session
server
ssl
application
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
Application number
CN201880079753.2A
Other languages
English (en)
Other versions
CN111448788A (zh
Inventor
A·巴特
P·R·丹那巴南
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN111448788A publication Critical patent/CN111448788A/zh
Application granted granted Critical
Publication of CN111448788B publication Critical patent/CN111448788B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/166Implementing security features at a particular protocol layer at the transport layer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0281Proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

所描述的实施例提供了用于发起连接的建立的系统和方法。所述系统可以包括在客户机和服务器之间的中间装置。该装置可以为在客户机上执行且与所述服务器建立了安全会话的应用确定至少一个服务器名称指示符(SNI)。该装置可以为每个与至少一个SNI对应的域名,确定对应域名的会话超时值。该装置可以根据每个会话超时值发送消息到客户机,以使该客户机使用安全会话对该对应域名发起连接的建立。

Description

用于基于SAAS的应用的SSL优化的跟踪SSL会话状态的方法
相关申请的交叉引用
本国际专利申请要求在2017年10月18日提交的、名称为“METHOD TO TRACK SSLSESSION STATES FOR SSL OPTIMIZATION OF SAAS BASED APPLICATIONS”的美国专利申请No.15/787,463的优先权,其全部内容通过引用包含于此以用于所有目的。
技术领域
本公开总体上涉及用于安全套接字层(SSL)或传输层安全(TLS)优化的系统和方法,包括但不限于为诸如软件即服务(SaaS)应用之类的应用预先建立SSL连接。
背景技术
SSL/TLS协议允许在客户机装置和远程服务器之间建立安全会话。SSL/TLS协议允许实体身份验证(例如,服务器和/或客户机身份验证),客户机和服务器之间的安全通信以及数据完整性。客户机和服务器可以通过执行握手过程建立SSL/TLS会话,在握手过程中,双方协商并商定一组定义SSL/TLS会话的会话参数。会话参数通常包含加密/解密信息,以用于加密或解密在SSL/TLS建立的会话期间交换的数据。
发明内容
提供本发明内容是为了以简化形式介绍概念的选择,这些概念将在下面的具体实施方式中进一步描述。本发明内容既不旨在标识关键特征或必要特征,也不旨在限制随附的权利要求的范围。
本公开涉及跟踪安全套接字层(SSL)或传输层安全(TLS)会话状态对象以优化用于客户机-服务器应用(例如基于软件即服务(SaaS)的应用)的SSL/TLS协议的系统和方法。客户机和服务器可以通过执行握手过程(例如,根据握手协议)来创建SSL/TLS会话,在握手过程中,该客户机和服务器协商并确定一组定义SSL/TLS会话的会话参数。为了增强会话安全性,可以将SSL/TLS会话与服务器侧和客户机侧的超时值相关联。例如,超时值可以表示两个实体例如在空闲状态期间将会话保存在高速缓存中的持续时间。
SSL/TLS会话可以与多个链接或域名相关联。例如,当客户机装置在握手期间发起SSL/TLS会话时可以指定(例如,与基于SaaS的应用或网页相关联的)单个链接或域名,一旦SSL/TLS会话建立,该客户机可以稍后请求访问各种其他相关链接或者域名。对此类链接或域名的访问可能涉及与这些链接或域名所关联的服务器建立SSL连接。此外,在超过会话超时值的空闲时间后请求访问此类链接或域名可导致重新执行握手和建立SSL连接。在当前的公开中,描述了基于SSL优化机制的实施例,以向基于SaaS应用(和/或服务器资源)提供更好的用户体验,和/或加速从服务器到客户机装置的连接和客户机装置上数据的加载。
客户机和服务器之间的中间装置可以跟踪客户机和/或服务器中的SSL会话状态对象。当会话状态超时,该装置可以发送消息(例如,包括动态脚本)到客户机装置,以使客户机装置基于与SSL/TLS会话相关的服务器名称指示符预先建立到服务器的连接。这实质上将预先建立域名系统(DNS)解析、SSL会话和SSL连接。当客户机装置恢复SSL/TLS会话时,相应的用户可以从寄载由客户机装置请求的数据的服务器体验更快的响应。
在一方面,本公开涉及用于发起连接的建立的系统的实施例。该系统可以包括处于客户机和服务器之间的中间装置。该装置可以为在客户机上执行并且与服务器建立安全会话的应用确定至少一个服务器名称指示符(SNI)。该装置可为对应于至少一个SNI的每个域名,确定相应域名的会话超时值。该装置可以根据每个会话超时值发送消息到客户机,以使客户机使用安全会话发起针对相应域名的连接的建立。
在一些实施例中,安全会话可以包括安全套接字层(SSL)会话,并且该消息可以包括服务器发送的事件(SSE)消息。在一些实施例中,应用可以被配置为访问服务器的基于软件即服务(SaaS)的资源。在一些实施例中,装置可使用访问服务器的一个或多个资源的应用的用户的历史数据,来确定至少一个SNI。在一些实施例中,装置可根据授予应用的用户对服务器的一个或多个资源的访问,确定至少一个SNI。该访问可以是根据基于角色的访问控制(RBAC)授予的。
在一些实施例中,装置可以使用装置的会话超时参数或应用的会话超时参数中的至少一个,来确定会话超时值。在一些实施例中,如果应用包括浏览器,则当装置的会话超时参数的值大于应用的会话超时参数的值时,装置可以根据来自应用的客户机问候消息的频率或间隔来确定第一会话超时值。在一些实施例中,如果应用包括浏览器,则当装置的会话超时参数的值小于应用的会话超时参数的值时,装置可以根据装置的会话超时参数确定第一会话超时值。
在一些实施例中,可以为应用建立安全会话以访问服务器的网页,并且该网页可以具有与第一域名相关联的链接。装置可以将第一消息发送到客户机,以使客户机使用安全会话发起针对第一域名的第一连接的建立。装置可以为第一域名确定第一会话超时值。装置可以根据第一会话超时值向客户机发送第二消息,以使客户机使用安全会话发起针对第一域名的第二连接的建立。
在另一方面,本公开涉及一种发起连接的建立的方法。该方法可以包括在客户机和服务器之间的中间装置,其为在客户机上执行并与服务器建立安全会话的应用确定至少一个服务器名称指示符(SNI)。该方法可以包括:装置为与至少一个SNI相对应的每个域名,确定相应域名的会话超时值。该方法可以包括装置根据每个确定的会话超时值向客户机发送消息,以使客户机使用安全会话发起针对相应域名的连接的建立。
在一些实施例中,安全会话可以包括安全套接字层(SSL)会话,并且消息可以包括服务器发送事件(SSE)消息。在一些实施例中,应用可以被配置为访问服务器的基于软件即服务(SaaS)的资源。在一些实施例中,该方法可包括装置使用访问服务器的一个或多个资源的应用的用户的历史数据,来确定至少一个SNI。在一些实施例中,该方法可包括装置根据授权给应用用户对服务器的一个或多个资源的访问,来确定至少一个SNI。该访问可以是根据基于角色的访问控制(RBAC)授予的。
在一些实施例中,该方法可包括该装置使用该装置的会话超时参数或应用的会话超时参数中的至少一个来确定会话超时值。在一些实施例中,如果应用包括浏览器,该方法可包括当该装置的会话超时参数值大于应用的会话超时参数值时,该装置根据来自应用的客户机问候消息的频率或间隔确定第一会话超时值。在一些实施例中,如果应用包括浏览器,该方法可包括当该装置的会话超时参数值小于应用的会话超时参数值,该装置根据装置的会话超时参数确定第一会话超时值。
在一些实施例中,可以为应用建立安全会话以访问服务器的网页,并且该网页可以具有与第一域名相关联的链接。该方法可包括该装置发送第一消息至客户机,以使客户机使用安全会话发起针对第一域名的第一连接的建立,为第一域名确定第一会话超时值,并根据第一会话超时值发送第二消息至客户机,以使客户机使用安全会话发起针对第一域名的第二连接的建立。
附图说明
从下面的具体实施方式、所附权利要求和附图可以更充分地理解本文所公开的实施例的目的、方面、特征和优点,附图中相似的附图标记标识类似或相同的元件。为了给其他特征提供上下文,说明书中引入的与附图相关联的附图标记可以在一个或多个后续附图中重复而无需在说明书中进行额外描述,并且在每个附图中并非每个元件都被标记。附图不一定按比例绘制,而是将重点放在解释实施例、原理和概念上。附图无意于限制随附的权利要求的范围。
图1A是根据示意性实施例的网络计算系统的框图;
图1B是根据示意性实施例的用于经由设备将计算环境从服务器传送到客户机的网络计算系统的框图;
图1C是根据示意性实施例的计算装置的框图;
图2是根据示意性实施例的用于处理客户机与服务器之间的通信的设备的框图;
图3是根据示意性实施例的虚拟化环境的框图;
图4是根据示意性实施例的集群系统的框图;
图5A是根据示意性实施例的用于发起建立用于客户机-服务器应用的安全会话连接的系统的框图;以及
图5B是根据示意性实施例的用于发起建立连接的方法的流程图。
具体实施方式
为了阅读下面的各个实施例的描述,以下对说明书的各个部分及其各自内容的描述可能是有帮助的:
A部分描述了可用于实践本文描述的实施例的网络环境和计算环境;
B部分描述了用于向远程用户传送计算环境的系统和方法的实施例;
C部分描述了用于虚拟化应用传送控制器的系统和方法的实施例;
D部分描述了用于提供集群式设备架构环境的系统和方法的实施例;以及
E部分描述了用于预先建立与安全会话相关联的安全连接的系统和方法的实施例。
A.网络与计算环境
参考图1A,示出了示意性网络环境100。网络环境100可以包括经由一个或多个网络104(1)-104(n)(通常称为网络104)与一个或多个服务器106(1)-106(n)(通常也称为远程机器106或服务器106)通信的一个或多个客户机102(1)-102(n)(通常也称为本地机器102或客户机102)。在一些实施例中,客户机102可以经由一个或多个设备200(1)-200n(通常称为设备200或网关200)与服务器106通信。
尽管图1A所示的实施例示出了客户机102和服务器106之间的一个或多个网络104,但在其他实施例中,客户机102和服务器106可以在同一网络104上。各种网络104可以是相同类型的网络或不同类型的网络。例如,在一些实施例中,网络104(1)可以是诸如局域网(LAN)或公司内联网的专用网络,而网络104(2)和/或网络104(n)可以是诸如广域网(WAN)或因特网的公共网络。在其他实施例中,网络104(1)和网络104(n)都可以是专用网络。网络104可以采用一种或多种类型的物理网络和/或网络拓扑,例如有线和/或无线网络,并且可以采用一种或多种通信传输协议,例如传输控制协议(TCP)、互联网协议(IP)、用户数据报协议(UDP)或其他类似协议。
如图1A所示,一个或多个设备200可以位于网络环境100的各个点或各个通信路径中。例如,设备200可以部署在两个网络104(1)和104(2)之间,并且设备200可以与彼此通信以协同工作,例如加速客户机102和服务器106之间的网络流量。在其他实施例中,设备200可以位于网络104上。例如,设备200可以被实现为客户机102和/或服务器106之一的一部分。在一个实施例中,设备200可以实现为网络装置,例如佛罗里达州劳德代尔堡的思杰系统有限公司销售的
Figure BDA0002532667290000051
产品。
如图1A所示,一个或多个服务器106可以作为服务器群38来操作。服务器群38的服务器106可以被逻辑分组,并且可以与客户机102和/或其他服务器106在地理上位于同一地点(例如,在本地)或在地理上分散(例如,基于云)。在一个实施例中,服务器群38(例如,作为应用服务器)代表一个或多个客户机102执行一个或多个应用,当然其他用途也是可能的,例如文件服务器、网关服务器、代理服务器或其他类似服务器用途。客户机102可以寻求对服务器106上寄载的应用的访问。
如图1A所示,在一些实施例中,设备200可以包括一个或多个附加设备、由其替换或与之通信,附加设备例如是WAN优化设备205(1)-205(n),通常称为WAN优化设备205。例如,WAN优化设备205可以加速、高速缓存、压缩或以其他方式优化或改善网络流量(例如去往和/或来自WAN连接的流量)的性能、操作、流控制或服务质量,例如优化广域文件服务(WAFS)、加速服务器消息块(SMB)或公用互联网文件系统(CIFS)。在一些实施例中,设备205可以是性能增强代理或WAN优化控制器。在一个实施例中,设备205可以被实现为佛罗里达州劳德代尔堡的思杰系统有限公司出售的
Figure BDA0002532667290000061
产品。
参考图1B,示出了用于传送和/或操作客户机102上计算网络环境的示例网络环境100'。如图1B所示,服务器106可以包括用于向一个或多个客户机102传送计算环境、应用和/或数据文件的应用传送系统190。客户机102可以包括客户机代理120和计算环境15。计算环境15可以执行或操作应用16,所述应用16访问、处理或使用数据文件17。可以经由设备200和/或服务器106传送计算环境15、应用16和/或数据文件17。
设备200例如可以通过应用传送系统190加速传送计算环境15的全部或一部分到客户机102。例如,设备200可以通过加速客户机102和服务器106之间的传输层流量,来将流应用及该应用可处理的数据文件从数据中心加速传送到远程用户位置。可以通过下列一种或多种技术来提供这样的加速,例如:1)传输层连接池化,2)传输层连接多路复用,3)传输控制协议缓冲,4)压缩,5)高速缓存或其他技术。设备200还可以提供服务器106的负载均衡以处理来自客户机102的请求,充当代理或访问服务器以提供对一个或多个服务器106的访问,提供安全性和/或充当客户机102与服务器106之间的防火墙,提供域名服务(DNS)解析,提供一个或多个虚拟服务器或虚拟互联网协议服务器,和/或提供从客户机102到服务器106的安全虚拟专用网络(VPN)连接,例如安全套接字层(SSL)VPN连接和/或提供加密和解密操作。
应用传送管理系统190可以基于策略引擎195所应用的身份验证和授权策略,以远程或其他方式向用户(例如,客户机102)传送计算环境15。远程用户可以获取计算环境并从任何网络连接的装置(例如客户机102)访问服务器存储的应用和数据文件。例如,设备200可以从服务器106请求应用和数据文件。响应于该请求,应用传送系统190和/或服务器106可以向客户机102传送该应用和数据文件,例如经由应用流以在客户机102上的计算环境15中进行操作,或者经由远程显示协议或以其他方式经由基于远程或基于服务器的计算。在一个实施例中,应用传送系统190可以被实现为思杰系统有限公司的Citrix WorkspaceSuiteTM的任何部分,例如
Figure BDA0002532667290000071
Figure BDA0002532667290000072
策略引擎195可以控制和管理对应用的访问、执行和传送。例如,策略引擎195可以确定用户或客户机102可以访问的一个或多个应用和/或应该如何向用户或客户机102传输应用,例如基于服务器的计算、流式传输或传送传送应用到客户机120本地以供本地执行。
例如,在操作中,客户机102可以请求执行应用(例如,应用16'),并且服务器106的应用传送系统190确定如何执行应用16',例如基于从客户机102接收到的证书以及由与该证书相关联的策略引擎195所应用的用户策略。例如,应用传送系统190可以使客户机102能够接收通过在服务器106上执行应用而生成的应用输出数据,可以使客户机102能够在从服务器106接收到应用之后本地执行该应用,或者可以经由网络104将应用流式传输到客户机102。例如,在一些实施例中,该应用可以是代表客户机102在服务器106上执行的基于服务器或基于远程的应用。服务器106可以使用诸如佛罗里达州劳德代尔堡的思杰系统有限公司的独立计算体系结构(ICA)协议的远程显示协议之类的瘦客户端或远程显示协议向客户机102显示输出。该应用可以是与实时数据通信相关的任何应用,例如用于流式传输图形、流式传输视频和/或音频或其他数据,传送远程桌面或工作空间或寄载的服务或应用(例如基础设施即服务(IaaS)、工作空间即服务(WaaS)、软件即服务(SaaS)或平台即服务(PaaS))的应用。
服务器106中的一个或多个可以包括性能监控服务或代理197。在一些实施例中,可以采用专用的一个或多个服务器106来执行性能监控。例如,可以通过软件、硬件或其组合使用数据收集、聚集、分析、管理和报告来执行性能监控。性能监控可以包括一个或多个代理,用于在客户机102上(例如,客户机代理120)、在服务器106上(例如,代理197)或在设备200和/或205上(未示出的代理)执行监控、测量和数据收集活动。通常,监控代理(例如120和/或197)对装置的任一应用和/或用户透明地(例如在后台)执行。在一些实施例中,监控代理197包括佛罗里达州劳德代尔堡的思杰系统有限公司的称为EdgeSight的任何产品实施例。
监控代理可以基于给定事件的发生或者在网络环境100的工作期间实时地以预定频率监控、测量、收集和/或分析数据。监控代理可以监控硬件、软件的资源消耗和/或性能,和/或客户机102、网络104、设备200和/或205、和/或服务器106的通信资源。例如,诸如传输层连接之类的网络连接、网络延迟、带宽利用率、最终用户响应时间、应用使用和性能、与应用的会话连接、高速缓存使用、存储器使用、处理器使用、存储使用、数据库事务、客户机和/或服务器使用、活跃用户、用户活动的持续时间、应用崩溃、错误、或挂起、登录到应用、服务器或应用交付系统所需的时间、和/或其他性能条件和指标都可以被监控。
监控代理可以为应用传送系统190提供应用性能管理。例如,基于一个或多个监控的性能条件或指标,可以动态地(例如,周期性地或实时地)调整应用传送系统190以基于网络环境性能和条件来优化服务器106到客户机102的应用传送。
在所描述的一些实施例中,客户机102、服务器106以及设备200和205可以被部署为任何类型和形式的计算装置,和/或在任何类型和形式的计算装置上执行,计算装置例如是能够通过至少一个网络通信并执行本文所述的操作的任何台式计算机、膝上型计算机或移动装置。例如,客户机102、服务器106和/或设备200和205可各自对应于一个计算机、多个计算机或诸如图1C所示的计算机101的分布式计算机的网络。
如图1C所示,计算机101可以包括一个或多个处理器103、易失性存储器122(例如,RAM)、非易失性存储器128(例如,一个或多个硬盘驱动器(HDD)或其他磁性或光学存储介质、一个或多个固态驱动器(SSD)(例如闪存驱动器或其他固态存储介质)、一个或多个混合磁性和固态驱动器、和/或一个或多个虚拟存储卷(例如云存储)、或这种物理存储卷和虚拟存储卷或其阵列的组合)、用户接口(UI)123、一个或多个通信接口118和通信总线150。用户接口123可包括图形用户接口(GUI)124(例如,触摸屏、显示器等)和一个或多个输入/输出(I/O)装置126(例如,鼠标、键盘等)。非易失性存储器128存储操作系统115、一个或多个应用116和数据117,从而例如由处理器103从易失性存储器122中执行操作系统115和/或应用116的计算机指令。可以使用GUI 124的输入装置来输入数据,或者可以从I/O装置126接收数据。计算机101的各种元件可以经由通信总线150进行通信。图1C所示的计算机101仅作为示例示出,因为可以通过任何计算或处理环境以及使用可具有能够如本文所述地操作的合适的硬件和/或软件的任何类型的机器或机器组,来实现客户机102、服务器106和/或设备200和205。
处理器103可以由执行一个或多个计算机程序的一个或多个可编程处理器来实现,用以执行系统功能。如本文所使用的,术语“处理器”描述了执行功能、操作或操作序列的电子电路。功能、操作或操作序列可以被硬编码到电子电路中,或者通过存储在存储器装置中的指令被软编码。“处理器”可以使用数字值或使用模拟信号执行功能、操作或操作序列。在一些实施例中,“处理器”可以以一个或多个应用专用集成电路(ASIC)、微处理器、数字信号处理器、微控制器、现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、多核处理器、或具有关联存储器的通用计算机来实现。“处理器”可以是模拟、数字或混合信号。在一些实施例中,“处理器”可以是一个或多个物理处理器或一个或多个“虚拟”(例如,位于远程的或“云”)处理器。
通信接口118可以包括一个或多个接口,以使计算机101能够通过各种有线和/或无线或蜂窝连接来访问诸如LAN、WAN或互联网的计算机网络。
在所描述的一些实施例中,第一计算装置101可以代表客户机计算装置(例如,客户机102)的用户执行应用,可以执行虚拟机,该虚拟机提供执行会话,在该执行会话(例如寄载的桌面会话)内应用代表用户或客户机计算装置(例如客户机102)执行,可以执行终端服务会话以提供寄载的桌面环境,或者可以提供对包括以下中的一个或多个的计算环境的访问:一个或多个应用、一个或多个桌面应用以及可以在其中执行一个或多个应用的一个或多个桌面会话。
网络环境100、客户机102、服务器106以及设备200和205的实现和操作的其他详细信息可以如2017年1月3日授予佛罗里达州劳德代尔堡的思杰系统有限公司的美国专利No.9,538,345中所描述,其教导通过引用并入本文。
B.设备架构
图2示出了设备200的示例实施例。如本文所述,设备200可以被实现为服务器、网关、路由器、交换机、网桥或其他类型的计算或网络装置。如图2所示,设备200的一个实施例可以包括硬件层206和被划分为用户空间202和内核空间204的软件层205。硬件层206提供硬件组件,在该硬件组件上执行内核空间204和用户空间202内的程序和服务,并允许内核空间204和用户空间202中的程序和服务相对于设备200在内部和外部进行数据通信。如图2所示,硬件层206可以包括用于执行软件程序和服务的一个或多个处理单元262、用于存储软件和数据的存储器264、用于通过网络发送和接收数据的网络端口266、以及用于对诸如与通过网络发送和接收的数据的安全套接字层(SSL)或传输层安全协议(TLS)处理有关的数据进行加密和解密的加密处理器260。
设备200的操作系统分配、管理可用的系统存储器,或以其他方式将其分隔成内核空间204和用户空间202。内核空间204被保留用于运行内核230,包括任何设备驱动程序、内核扩展或其他与内核相关的软件。如本领域技术人员所知,内核230是操作系统的核心,并提供对应用104的资源和与硬件相关的组件的访问、控制和管理。内核空间204还可以包括与高速缓存管理器232协同工作的多个网络服务或进程。
设备200可以包括一个或多个网络协议栈267,例如基于TCP/IP的协议栈,用于与客户机102、服务器106、网络104和/或其他设备200或205通信。例如,设备200可以建立和/或终止在客户机102和服务器106之间的一个或多个传输层连接。每个网络协议栈267可以包括用于对一个或多个网络分组进行排队以供设备200传输的缓冲器243。
内核空间204可以包括高速缓存管理器232、分组引擎240、加密引擎234、策略引擎236和压缩引擎238。换句话说,进程232、240、234、236和238中的一个或多个在设备200的操作系统的内核地址空间中运行,这可以减少对存储器存取的数据事务的数量和/或内核模式与用户模式之间的上下文切换的数量,例如,因为在内核模式下获得的数据可以不必传递或复制到用户进程、线程或用户级别的数据结构。
高速缓存管理器232可以复制存储在其他位置的原始数据或先前计算、生成或传输的数据,以减少数据的访问时间。在一些实施例中,高速缓存存储器可以是设备200的存储器264中的数据对象,或者可以是具有比存储器264更快的访问时间的物理存储器。
策略引擎236可以包括统计引擎或其他配置机制,以允许用户标识、指定、定义或配置缓存策略以及对由设备200缓存的对象、数据或内容的访问、控制和管理,以及定义或配置安全性、网络流量、网络访问、压缩或由设备200执行的其他功能。
加密引擎234可以处理任何与安全有关的协议,例如SSL或TLS。例如,加密引擎234可以对经由设备200传送的网络分组或其任何部分进行加密和解密,可以例如在客户机102、服务器106和/或其他设备200或205之间设置或建立SSL、TLS或其他安全连接。在一些实施例中,加密引擎234可以使用隧道协议以提供在客户机102和服务器106之间的VPN。在一些实施例中,加密引擎234与加密处理器260通信。压缩引擎238在客户机102和服务器106之间和/或在一个或多个设备200之间对网络分组进行双向压缩。
分组引擎240可以管理由设备200经由网络协议栈267接收和传输的分组的内核级处理,以经由网络端口266发送和接收网络分组。分组引擎240可以与加密引擎234、高速缓存管理器232、策略引擎236和压缩引擎238一起工作,例如以执行加密/解密、流量管理(例如请求级内容切换和请求级缓存重定向)以及数据的压缩和解压缩。
用户空间202是由用户模式应用或以其他方式在用户模式下运行的程序使用的存储区域或操作系统的一部分。用户模式应用可能无法直接访问内核空间204,而是使用服务调用来访问内核服务。用户空间202可以包括图形用户接口(GUI)210、命令行接口(CLI)212、壳服务214、健康监控器216和守护进程服务218。GUI 210和CLI 212能够使系统管理员或其他用户诸如经由设备200的操作系统与设备200的操作交互并控制设备200的操作。壳服务214包括程序、服务、任务、进程或可执行指令,以支持用户经由GUI 210和/或CLI 212与设备200的交互。
健康监控器216监控、检查、报告并确保网络系统正常运行,并且确保用户正通过网络接收所请求的内容,例如通过监控设备200的活动。在一些实施例中,健康状况监控器216拦截并检查经过设备200的任何网络流量。例如,健康状况监控器216可以与加密引擎234、高速缓存管理器232、策略引擎236、压缩引擎238、分组引擎240、守护进程服务218和壳服务214中的一个或多个相接口,以确定设备200的任何部分的状态、状况、操作条件或健康状况。此外,健康监控器216可以确定程序、进程、服务或任务是否是激活的并且当前正在运行,检查由任何程序、进程、服务或任务提供的状态、错误或历史日志以确定设备200的任何部分的任何条件、状态或错误。此外,健康监控器216可以测量和监控在设备200上执行的任何应用、程序、进程、服务、任务或线程的性能。
守护进程服务218是连续运行或在后台运行并处理由设备200接收到的周期性服务请求的程序。在一些实施例中,守护进程服务可以根据需要将请求转发到其他程序或进程,例如另一个守护进程服务218。
如本文所述,设备200可以通过打开与每个服务器106的一个或多个传输层连接并维持这些连接以允许由客户机经由互联网的重复数据访问(例如“连接池化”),来减轻服务器106因重复打开和关闭与客户机102的传输层连接所引起的大部分处理负荷。为了执行连接池化,设备200可以通过在传输层协议级别修改序列号和确认号来转换或复用通信(例如,“连接多路复用”)。设备200还可以为客户机102和服务器106之间的通信提供交换或负载均衡。
如本文所述,每个客户机102可以包括客户机代理120,用于经由网络104与设备200和/或服务器106建立和交换通信。客户机102可能已经安装和/或执行正在与网络104通信的一个或多个应用。客户机代理120可以拦截来自一个或多个应用使用的网络协议栈的网络通信。例如,客户机代理120可以在网络协议栈中的任意点处拦截网络通信,并将该网络通信重定向到由客户机代理120期望、管理或控制的目的地,例如以拦截传输层连接并将其重定向至由客户机代理120控制或管理的IP地址和端口。由此,客户机代理120可以透明地拦截传输层下方的任何协议层(例如网络层)和传输层上方的任何协议层(例如会话、表示或应用层)。客户机代理120可以与传输层相接口,以保护、优化、加速、路由或负载均衡经由传输层所承载的任何协议提供的任何通信。
在一些实施例中,客户机代理120被实现为由佛罗里达州劳德代尔堡的思杰系统有限公司开发的独立计算架构(ICA)客户端。客户机代理120可以执行加速、流式传输、监控和/或其他操作。例如,客户机代理120可以加速从服务器106到客户机102的应用的流式传输。客户机代理120还可以执行端点检测/扫描,并且收集关于针对设备200和/或服务器106的客户机102的端点信息。设备200和/或服务器106可以使用所收集的信息来确定并提供对客户机到网络104的连接的访问、身份验证和授权控制。例如,客户机代理120可以识别和确定一个或多个客户机侧属性,例如:操作系统和/或操作系统的版本、操作系统的服务补丁、正在运行的服务、正在运行的进程、文件、客户机的各种应用的存在或版本,例如防病毒、防火墙、安全性和/或其他软件。
设备200的实现和操作的其他细节可以如在2017年1月3日授予佛罗里达州劳德代尔堡的思杰系统有限公司的美国专利号9,538,345中所述,该专利的教导在此通过引用并入本文。
C.用于提供虚拟化应用传送控制器的系统和方法
现在参考图3,示出了虚拟化环境300的框图。如图所示,虚拟化环境300中的计算装置302包括虚拟化层303、管理程序层304和硬件层307。管理程序层304包括一个或多个管理程序(或虚拟化管理器)301,其分配和管理由在虚拟化层303中执行的至少一个虚拟机(VM)(例如,虚拟机306中之一)对硬件层307中的多个物理资源(例如,一个或多个物理处理器321和一个或多个物理磁盘328)的访问。每个VM 306可以包括分配的虚拟资源,例如虚拟处理器332和/或虚拟盘342,以及例如虚拟存储器和虚拟网络接口之类的虚拟资源。在一些实施例中,VM 306中的至少一个可以包括控制操作系统(例如305),其与管理程序301通信并用来执行用于管理和配置装置302上的其他VM(例如客户操作系统310)的应用。
通常,管理程序301可以以模拟操作系统访问物理装置的任何方式向VM 306的操作系统提供虚拟资源。因此,一个或多个管理程序301可以用于仿真虚拟硬件、划分物理硬件、虚拟化物理硬件以及执行提供对计算环境的访问的虚拟机。在示意性实施例中,管理程序301可以被实现为XEN管理程序,例如,如由开源Xen.org社区所提供的。在示意性实施例中,执行创建虚拟机平台的管理程序的装置302被称为主机服务器,可在该虚拟机平台上执行客户操作系统。在这样的实施例中,装置302可以被实现为由佛罗里达州劳德代尔堡的思杰系统有限公司提供的XEN服务器。
管理程序301可以创建一个或多个VM 306,在其中运行操作系统(例如,控制操作系统305和/或客户操作系统310)。例如,管理程序301加载虚拟机映像以创建VM 306以运行操作系统。管理程序301可以向VM 306提供硬件层307的抽象,和/或可以控制如何将硬件层307的物理能力呈现给VM 306。例如,管理程序301可以管理分布在多个物理计算装置上的资源池。
在一些实施例中,VM 306之一(例如,执行控制操作系统305的VM)可以例如通过管理VM的执行和/或终止和/或管理对VM的虚拟资源的分配来管理和配置其他VM 306。在各种实施例中,VM可以经由例如一个或多个应用编程接口(API)、共享内存和/或其他技术与管理程序301和/或其他VM通信。
通常,VM 306可以向装置302的用户提供对虚拟化计算环境300内的资源的访问,例如,一个或多个程序、应用、文档、文件、桌面和/或计算环境或其他资源。在一些实施例中,VM 306可以被实现为完全虚拟化的VM,其不知道它们是虚拟机(例如,硬件虚拟机或HVM)。在其他实施例中,VM可以知道它是虚拟机,和/或VM可以被实现为半虚拟化(PV)VM。
尽管在图3中示出为包括单个虚拟化装置302,但虚拟化环境300可以在系统中包括多个联网装置,在该系统中,至少一个物理主机执行虚拟机。VM在其上运行的装置可以被称为物理主机和/或主机。例如,设备200可以在任何计算装置(例如客户机102、服务器106或设备200)上的虚拟化环境300中附加或替代地实现。虚拟设备可以提供用于可用性、性能、健康监控、缓存和压缩、连接复用和池化和/或安全处理(例如,防火墙、VPN、加密/解密等)的功能,类似于关于设备200所描述的。
虚拟化计算环境300的实现和操作的其他细节可以如在2017年1月3日授予佛罗里达州劳德代尔堡的思杰系统有限公司的美国专利号9,538,345中所述,该专利的教导通过引用合并于此。
在一些实施例中,服务器可以例如在多核处理系统的多个核和/或多处理器装置的多个处理器上执行多个虚拟机306。例如,尽管在本文中通常被示为“处理器”(例如,在图1C、2和3中),但是一个或多个处理器可以被实现为单核或多核处理器,以提供多线程、并行架构和/或多核架构。每个处理器和/或核都可以具有或使用分派或分配以供私人或本地使用的、仅由该处理器/核可访问的存储器,和/或可以具有或使用公共或共享的并且由多个处理器/核可访问的存储器。这样的架构可以允许在一个或多个处理器和/或一个或多个核上的工作、任务、负载或网络流量分布(例如,通过功能并行、数据并行、基于流的数据并行等)。
此外,代替(或除了)以物理处理器/核的形式实现的核的功能,这样的功能可以在客户机102、服务器106或设备200上的虚拟化环境(例如300)中实现,以使得可以在多个装置之间实现该功能,例如计算装置的集群、服务器群或计算装置的网络等。各种处理器/核可以使用多种接口技术(例如核到核消息传递、共享内存、内核API等)与彼此相接口或通信。
在采用多个处理器和/或多个处理器核的实施例中,所描述的实施例可以在核或处理器之间分布数据分组,例如以均衡核之间的流量。例如,分组分布可以基于对下列的确定:每个核执行的功能,源和目的地地址,以及/或者相关联的核上的负载是否高于预定阈值;相关联的核上的负载是否低于预定阈值;相关联的核上的负载是否小于其他核上的负载;或者可以用于部分地基于处理器上的负载量来确定将数据分组转发到何处的任何其他度量。
例如,可以使用接收侧缩放(RSS)在核或进程之间分布数据分组,以便使用网络中的多个处理器/核来处理分组。RSS通常允许在多个处理器/核之间均衡分组处理,同时维持分组的有序传送。在一些实施例中,RSS可以使用哈希方案来确定用于处理分组的核或处理器。
RSS可以从任何类型和形式的输入(例如值的序列)生成哈希。该值的序列可以包括网络分组的任何部分,例如网络分组的任何头部、字段或载荷,并且包括与网络分组或数据流相关联的任何信息元组,例如地址和端口。哈希结果或其任何部分可以用于识别处理器、核、引擎等,以例如经由哈希表、间接表或其他映射技术来分布网络分组。
多处理器和/或多核系统的实现和操作的其他细节可以如在2017年1月3日授予佛罗里达州劳德代尔堡的思杰系统有限公司的美国专利号9,538,345中所述,其教导在此通过引用并入本文。
D.用于提供分布式集群架构的系统和方法
尽管在图1A和1B中示出为单个设备,但设备200可以被实现为一个或多个分布式或集群设备。个体的计算装置或设备可以称为集群的节点。集中式管理系统可以执行负载均衡、分布、配置或其他任务,以允许多个节点作为单个计算系统一起操作。可以将这种集群视为单个虚拟设备或计算装置。图4示出了示意性计算装置集群或设备集群400的框图。多个设备200或其他计算装置(例如,节点)可以被加入单个集群400中。集群400可以作为应用服务器、网络存储服务器、备份服务或任何其他类型的计算装置操作来执行设备200和/或205的许多功能。
在一些实施例中,集群400的每个设备200可以被实现为如本文所述的多处理器和/或多核设备。如果集群将分组分布到集群的节点,并且每个节点分布用于处理的分组到该节点的处理器/核,这样的实施例可以采用一个设备两层分布系统。在许多实施例中,集群400的设备200中的一个或多个可以被物理地分组或在地理位置上彼此邻近,例如给定机箱、机架和/或数据中心中的一组刀片服务器或机架安装装置。在一些实施例中,集群400的设备200中的一个或多个可以在地理上分布,即多个设备200不在物理上或地理位置上位于同一位置。在这样的实施例中,地理上远程的设备可以通过专用网络连接和/或VPN来加入。在地理上分布的实施例中,负载均衡还可以考虑地理上远程的设备之间的通信延迟。
在一些实施例中,集群400可以被认为是虚拟设备,其经由常见配置、管理和目的被分组,而不是作为物理组。例如,设备集群可以包括由一个或多个服务器执行的多个虚拟机或进程。
如图4所示,设备集群400可以经由客户机数据平面402耦合到第一网络104(1),例如以在客户机102和设备集群400之间传输数据。客户机数据平面402可以被实现为交换机、集线器、路由器或集群400内部或外部的其他类似网络装置,以在集群400的各个节点之间分布流量。例如,可以基于以下执行流量分布:等价多路径(ECMP)路由(其下一跳配置有集群的设备或节点)、开放式最短路径优先(OSPF)、基于无状态哈希的流量分布、链路聚合(LAG)协议或任何其他类型和形式的流量分布、负载均衡和路由。
设备集群400可以经由服务器数据平面404耦合到第二网络104(2)。类似于客户机数据平面402,服务器数据平面404可以实现为交换机、集线器、路由器或其他网络装置,其可以在集群400的内部或外部。在一些实施例中,客户机数据平面402和服务器数据平面404可以合并或组合到单个装置中。
在一些实施例中,集群400的每个设备200可以经由内部通信网络或背板406连接。背板406可以启用节点间或设备间控制和配置消息,以用于节点间的流量转发,和/或用于将配置和控制流量从管理员或用户传送到集群400。在一些实施例中,背板406可以是物理网络、VPN或隧道或其组合。
集群400的其他细节可以如在2017年1月3日授予佛罗里达州劳德代尔堡的思杰系统有限公司的美国专利号9,538,345中的描述,其教导通过引用合并于此。
E.用于预先建立安全会话的安全连接的系统和方法
本公开在一些方面涉及跟踪安全套接字层(SSL)或传输层安全(TLS)会话状态对象以优化用于客户机-服务器应用(如基于软件即服务(SaaS)的应用)的SSL/TLS协议的系统和方法。客户机和服务器可以通过执行握手过程(通过握手协议)来创建SSL/T LS会话,在此过程中,客户机和服务器可以协商并确定一组定义SSL/TLS会话的会话参数。为了增强会话安全,SSL/TLS会话可以与服务器侧和客户机侧的超时值相关联。超时值表示两个实体在空闲状态期间将会话保持在高速缓存中的持续时间。
SSL/TLS会话可以与多个链接或域名相关联。例如,当客户机装置在握手期间发起SSL/TLS会话时可以指定(例如,与基于SaaS的应用或网页相关联的)单个链接或域名,一旦建立了SSL/TLS会话,该客户机可以稍后请求访问各种其他相关链接或域名。访问此类链接或域名可能会涉及建立与此类链接或域名所关联的服务器的SSL连接。此外,在超过会话超时值的空闲时间后,请求访问链接或域名可能会导致重新执行握手和建立SSL连接。在本公开中,描述了一种基于SSL优化的机制,其向基于SaaS的应用(和/或服务器资源)提供更好的用户体验,和/或加速从服务器到客户机装置的连接和数据的加载。
客户机和服务器之间的中间装置可以跟踪客户机和服务器中的SSL会话状态对象。当会话状态超时时,该装置可以发送消息(例如,包括动态脚本)到客户机装置,以使客户机装置基于与SSL/TLS会话关联的服务器名称指示符(SNI),预先建立到服务器的连接。这实质上将预先建立域名系统(DNS)解析、SSL会话和/或SSL连接。当客户机装置恢复该SSL/TLS会话时,相应的用户可以体验来自寄载该客户机装置请求的数据的服务器的更快响应。
现在参考图5A,描绘了系统500的一个实施例,其用于发起对客户机-服务器应用的SSL/TLS会话的SSL/TLS连接的建立。简要概述,系统500可以包括一个或多个客户机102a-n,中间装置502和服务器群38。服务器群38可以包括一个或多个服务器106a-n。如本文所使用的,参数m和n表示整数。服务器106a-n可以包括web服务器、与一个或多个基于SaaS的应用相关联的服务器、其他服务器,或它们的组合。中间装置502可以包括服务器名称指示符(SNI)解析器504、SSL会话状态监控器506、服务器事件处理器508、动态脚本510和/或一个或多个SSL服务器高速缓存512a-n(在下文中单独或共同称为SSL服务器高速缓存512)。一个或多个客户机102a-n可以包括一个或多个对应的SSL客户机高速缓存514a-n(在下文中单独或共同称为SSL客户机高速缓存514)。一个或多个客户机102a-n可以通信地连接到中间装置502。中间装置502可以与服务器106a-n通信地连接。
在一个或多个实施例中,上述每个元件或实体以硬件,或者硬件和软件的组合来实现。例如,这些元件或实体中的每一个可以包括在装置102的硬件上执行的任何应用、程序、库、脚本、任务、服务、进程或任何类型和形式的可执行指令。硬件包括诸如一个或多个处理器的电路,例如,在一个或多个实施例中,如上面结合图1C的计算装置101所描述的那样。
本解决方案的系统和方法可以以任何类型和形式的装置来实现,包括客户机、服务器和设备200。如本文所引用的,“服务器”有时可以指客户机-服务器关系中的任何装置,例如,与客户机装置握手的设备。本系统和方法可以在任何中间装置或网关中实现,例如本文描述的设备或装置200的任何实施例。例如,本系统和方法的某些部分可以被实现为设备的分组处理引擎和/或虚拟服务器的一部分。该系统和方法可以在任何类型和形式的环境中实现,包括本文所述的多核设备、虚拟化环境和集群环境。例如,中间装置502可以包括上文至少结合图1A-1C、2和4描述的设备200的一个或多个特征的任何实施例。
客户机102(例如,在客户机102a-n中)可以请求与服务器群38的对应的SSL/TLS会话来访问与一个或多个服务器106a-n相关联的一个或多个资源。为建立SSL/TLS会话,客户机102可以与中间装置502执行相应的SSL/TLS握手过程。在握手过程期间,客户机102和中间装置502可以协商或商定一组定义或用于建立该SSL/TLS会话的SSL/TLS参数。客户机102可以将与对应的SSL/TLS会话相关联的SSL/TLS参数存储在对应的SSL客户机高速缓存514中。在中间装置侧,中间装置502可以将与同一SSL/TLS会话相关联的SSL/TLS参数存储在对应的SSL服务器高速缓存512中。例如,SSL客户机高速缓存514a和SSL服务器高速缓存512a可以存储客户机102a与中间装置502之间的SSL/TLS会话的SSL/TLS参数,SSL客户机高速缓存514b和SSL服务器高速缓存512b可以存储客户机102b与中间装置502之间的SSL/TLS会话的SSL/TLS参数,如此等等。
客户机102可以建立或创建到不同服务器106的多个SSL/TLS连接来作为客户机102和服务器群38之间单个SSL/TLS会话的一部分。客户机102可以在单个SSL/TLS会话内建立与一个或多个资源(例如,网页或文档)、一个或多个服务器(或web)应用,或其组合的SSL/TLS连接。资源和/或服务器应用可以驻留在不同的服务器106上。例如,客户机102可以建立到与这里表示为“链接-1”的链接对应的网页(例如,“网页-1”)的SSL/TLS连接。该网页可以包含与多个其他网页相对应的多个链接,例如分别与“网页-2”、“网页-3”和“网页-4”相对应的“链接-2”、“链接-3”和“链接-4”。客户机还可以建立到网页“网页-2”、“网页-3”和“网页-4”的SSL/TLS连接。例如,刷新或重新连接到“网页-1”,或与“网页-1”进行交互,可能导致创建(或重新建立)客户机102与寄载网页“网页-1”,“网页-2”,“网页-3”和/或“网页-4”的一个或多个服务器106之间的多个安全连接。
客户机102可以为对应的SSL客户机高速缓存514分配SSL客户机高速缓存超时。SSL客户机高速缓存超时可以表示由客户机102例如在相应的SSL/TLS会话的空闲状态期间存储SSL客户机高速缓存514的持续时间。例如,客户机102a可以将第一SSL客户机高速缓存超时值分配给SSL客户机高速缓存514a,客户机102b可以将第二SSL客户机高速缓存超时值分配给SSL客户机高速缓存514b,如此等等。所分配的SSL客户机高速缓存超时值可以取决于相应的客户机102、相应的SSL/TLS会话或其组合。当客户机102的用户未与所建立的SSL/TLS会话交互(空闲状态)时,客户机102可以将对应的SSL客户机高速缓存514保持相当于或等于SSL客户机高速缓存超时的时间段。客户机102可以在检测到SSL/TLS会话的空闲状态时启动计时器。当计时器值等于分配给SSL/TLS会话的SSL客户机高速缓存超时时,客户机102可以删除或清空相应的SSL客户机高速缓存514。
中间装置502可以是(或可以包括)应用传送控制器(ADC)设备/服务器。中间装置502可以代表服务器106a-n进行操作以执行例如与在客户机102a-n和服务器106a-n之间建立、维护或恢复SSL/TLS会话相关联的SSL/TLS过程。例如,中间装置502可以执行SSL/TLS握手、跟踪SSL/TLS会话状态对象、本公开中描述的方法、或其组合,而服务器106a-n可以通过所建立的SSL/TLS会话,对在服务器106a-n和客户机102a-n之间交换的数据进行加密或解密。
中间装置502可包括SNI解析器504,其被配置成为客户机102和服务器群38之间的每个SSL/TLS会话,确定至少一个对应的SNI(或域名)。SSL/TLS会话可以与诸如SaaS应用之类的客户机-服务器应用相关联。对于在客户机102上执行并与客户机和服务器群38之间的对应SSL/TLS会话相关联的给定的客户机-服务器应用(例如SaaS应用),SNI解析器504可以确定与该应用关联的SNI或者域名。虽然客户机102可以在建立SSL/TLS会话时指示单个服务器地址或单个链接,但是一旦建立了SSL/TLS会话,客户机102可以访问由服务器群38的一个或多个服务器106寄载的一个或多个其他资源(例如,网页、文档、基于SaaS的资源、或其组合)。例如,可以跨越多个服务器106分布由服务器群寄载的应用。在访问该应用时,客户机102可以经由该应用浏览各种网页或资源,并因而,访问寄载这些网页或资源的一个或多个服务器106。
SNI解析器504可以为各种客户机102、由服务器群38寄载的各种应用、或它们的组合监控或跟踪(或收集)历史数据。客户机102可以经由中间装置502访问由服务器群38寄载的应用或其资源。对于每个客户机102(或对应的用户),SNI解析器504(或中间装置502的其他组件)可以在中间装置502的数据库(图5A中未示出)中或在中间装置502可访问的数据库中,跟踪、记录或存储所访问的应用资源的指示。对于每个客户机-应用对,中间装置502可以在数据库中维护对所访问的应用资源的指示或它们的统计数据。中间装置502可以维护每个应用的历史数据,该历史数据指示关于对资源的访问/连接和/或与应用的交互的、与各个客户机102相关联的先前访问事件或访问统计数据。中间装置502可为每个客户机102或相应的用户维护简档。每个简档可以包括历史数据,其指示与该简档相关联的客户机102或用户的应用资源的访问事件(或相应的统计数据)。
当在客户机102与服务器群38的其中一个服务器106之间建立用于客户机-服务器应用的SSL/TLS会话时,SNI解析器504可以例如从中间装置502可访问的数据库中,访问与客户机102和所访问的应用相关联的历史数据。SNI解析器504可以基于历史数据来识别(例如,在先前的SSL/TLS会话中)客户机先前访问的应用的资源。SNI解析器504可以识别对于该应用的每个识别的资源的访问频率或多个先前访问事件。SNI解析器504可以根据历史数据,确定在当前建立的SSL/TLS会话期间客户机102最可能访问的应用的资源或相应的SNI的集合。例如,所确定的SNI的集合可以包括客户机102先前访问的所有SNI(或相应的应用资源),或者仅包括已经被访问了至少预定次数或满足至少预定访问频率的那些SNI。
SNI解析器504可以根据基于资源的访问控制(RBAC)信息,确定与所建立的SSL/TLS会话相关联的SNI或对应的资源的集合。RBAC信息可以存储在中间装置的存储器或存储设备中,或可由中间装置访问的存储器或存储设备中。RBAC信息可以包括指示各种客户机102或对应用户的访问权限的信息。例如,用户X(或相应的客户机102)可具有访问应用(或应用资源)A,B和C的权限,但没有访问应用(或应用资源)D的权限。SNI解析器504可以将与所建立的SSL/TLS会话相关联的SNI(或相应资源)的集合确定为客户机102或相应用户具有访问权限的SNI(或相应资源)。
在一些实施例中,SNI解析器504可以基于RBAC信息、历史数据、指示在当前SSL/TLS会话期间访问的链接的数据或其组合来确定SNI的集合。例如,SNI解析器504可以首先选择客户机102或相应用户有权访问的所有SNI。然后,SNI解析器504可以基于历史数据或指示在当前SSL/TLS会话期间访问的链接(或资源)的数据来过滤所选择的SNI。
中间装置502可以包括SSL会话状态监控器506。SSL会话状态监控器506可以监控或跟踪相应的客户机102和中间装置502之间建立的每个SSL/TLS会话的状态对象。对于每个SSL/TLS会话(例如,与SaaS应用相关联的),SSL会话状态监控器506可以确定服务器侧和客户机侧的SSL会话超时值,并将所确定的SSL会话超时值映射到与该SSL/TLS会话对应的SNI(例如,通过将信息存储在表中)。在服务器侧,中间装置502可以对每个SSL服务器高速缓存512a-n,设置或分配对应的SSL会话超时值(或服务器高速缓存超时值)。SSL服务器高速缓存512a-n中的每一个可以包括(或关联)相应的服务器高速缓存超时值。对于给定的已建立的SSL/TLS会话,SSL会话状态监控器506可以从与该SSL/TLS会话相关联的SSL服务器高速缓存512中或从中间装置502的存储器中访问对应的服务器高速缓存超时值。
在客户机侧,确定与客户机102关联的给定SSL/TLS会话的SS客户机高速缓存超时值,可以取决于与该SSL/TLS会话关联的应用的类型。例如,在与SSL/TLS会话相关联且在客户机102上执行的应用是桌面或移动客户端(例如,SaaS/客户机-服务器应用的本地代理或实例)的情况下,对应的客户机高速缓存超时值可以等于例如由中间装置502分配的默认值,或是该默认值的函数。例如,SSL会话状态监控器506可以使用函数“SSL_get_default_timeout()”来确定SSL客户机高速缓存超时值。
在与SSL/TLS会话关联并在客户机102上执行的应用是浏览器的情况下,中间装置502可能无法完全控制客户机侧的SSL/TLS会话信息。但是,SSL客户机高速缓存超时值(例如,由浏览器设置)可能小于在服务器侧的对应的SSL服务器高速缓存超时值。在这样的情况下,SSL会话状态监控器506(或中间装置502)可以监控中间装置502从客户机102接收‘客户机问候(Client Hello)’消息(例如,以零作为会话标识(ID))的频率,并基于这样的频率推断SSL客户机高速缓存超时值。例如,在SSL会话状态监控器506可以确定SSL客户机高速缓存超时值等于以零作为会话标识(ID)的‘客户机问候’消息频率的倒数。SSL会话状态监测器506可以收集和维护历史数据来确定这样的频率信息。在SSL客户机高速缓存超时值大于对应的SSL服务器高速缓存超时值的情况下,SSL会话状态监控器506可以从对应的SSL服务器高速缓存超时值推断出SSL客户机高速缓存超时值。例如,在SSL会话状态监控器506可估计SSL客户机高速缓存超时值等于对应的SSL服务器高速缓存超时值(或为其函数)。
SSL会话状态监控器506(或中间装置502)可以将所确定的SSL客户机高速缓存超时值映射到由SNI解析器504确定的域名或SNI中的每一个(例如,通过在数据库或表格或其他存储结构中维护该信息)。对于每个SSL/TLS会话,SSL会话状态监控器506(或中间装置502)可以维护对应的表(或其他数据结构),其将由SNI解析器504为该SSL/TLS会话确定的域名或SNI中的每一个映射到为该SSL/TLS会话确定的SSL客户机高速缓存超时值。将给定SSL/TLS会话的域名或SNI映射到为该会话确定的SSL客户机高速缓存超时值,可以允许高效地管理与该SSL/TLS会话相关联的客户机102和服务器106之间的SSL连接。
中间装置502可以包括服务器事件处理器508。服务器事件处理器508可以管理服务器发送事件(SSE),并将与此类事件相关的数据发送或推送到客户机102a-n。SSE可以包括由中间装置502自动发送或推送到客户机装置102的数据或更新,这些数据或更新与由服务器群38寄载的并由客户机102访问的应用(或资源)相关。服务器事件处理器508可以确定何时以及将什么数据推送到客户机102。服务器事件处理器508可以在发送到客户机102之前,准备或生成与SSE相关联的数据。服务器事件处理器508可以发送SSE消息给客户机102以提供和/或激活动态脚本510。
中间装置502可以包括或提供动态脚本510(例如,回调或连接预建立脚本)。动态脚本510可以包括计算机代码指令,当由客户机装置102执行时,可以使客户机装置102建立与服务器群38的一个或多个服务器106的一个或多个SSL连接。中间装置502可以包括或提供多个动态脚本510,其例如与在客户机102a-n和服务器群38的服务器106之间建立的相应多个SSL/TLS会话相关联。对于每个SSL/TLS会话,相应的动态脚本510可以包括与该SSL/TLS会话相关联的(例如,由SNI解析器504)已确定的域名(或SNI)、相应的SSL客户机高速缓存超时值或其指示、与相应的SSL/TLS会话相关联的其他信息(例如,SSL/TLS会话ID)、与域名建立SSL连接的指令、或它们的组合。
服务器事件处理器508可为每个SSL/TLS会话监控相应的SSL客户机高速缓存超时值,并基于(或根据)相应的SSL客户机高速缓存超时值,推送或发送消息到相应的客户机102,该消息包括该会话的动态脚本510。服务器事件处理器508可以将动态脚本510作为SSE或其他类型的消息推送或发送到客户机102。中间装置502可以维护通用脚本,该通用脚本包括由客户机102建立一个或多个SSL连接的指令。服务器事件处理器508可以使用通用脚本来生成动态脚本510,例如,通过将以下插入通用脚本中:与所确定的SNI相关联的域名、SSL客户机高速缓存超时的指示、SSL/TLS会话ID、或它们的组合。一旦检测到SSL/TLS会话的空闲状态,服务器事件处理器508即可启动计时器。一旦计时器的值等于或大于SSL客户机高速缓存超时值,则服务器事件处理器508可以将动态脚本510推送到客户机102。在一些实现中,服务器事件处理器508可以在计时器的值达到SSL客户机高速缓存超时值之前,将动态脚本510推送到客户机102。在这样的实现中,动态脚本510可以包括对客户机102将在其处建立与动态脚本510中指示的域名的SSL连接的实例的指示。
在接收到动态脚本510后,客户机102可以执行动态脚本510,以预先建立与动态脚本510中指示的域名相关联的服务器106的SSL连接。预先建立的SSL连接可以包括客户机102与中间装置502发起简化的握手,以重用原来建立的SSL/TLS会话(例如,具有超时的SSL客户机高速缓存),并建立SSL连接。在简化的握手中,客户机102可以发送包括SSL/TLS会话ID或会话票证的“客户机问候”消息。会话票证可以包括定义在客户机102和中间装置502之间的先前建立的SSL/TLS会话的信息(或与之相关联的信息)。作为响应,中间装置502可以基于先前协商的(例如,在先前的完整握手过程中)会话参数,恢复SSL/TLS会话。中间装置502可以基于所接收的“客户机问候”消息中的SSL/TLS会话ID来识别先前协商的会话参数。例如,中间装置502可以基于所接收的会话ID识别SSL服务器高速缓存512(或存储在中间装置512的存储器中的会话数据,或中间装置512可访问的存储器中的会话数据)。在“客户机问候”消息中使用会话票证的情况下,中间装置502可以使用会话票证中指示的会话参数。在简化的握手(或会话重用过程)中,中间装置502和客户机102可以使用先前协商的会话加密/解密信息,并跳过重新生成这种信息。由于生成会话加密/解密信息是需要大量计算的和耗时的,与进行完整的握手相比,使用会话重用(或简化的握手)可以减少延迟和提高计算效率。特别地,简化的握手可以减少中央处理单元(CPU)的使用率,和/或加快SSL连接的预先建立。
在一个说明性且非限制性的示例中,动态脚本510可以包括指示与客户机102访问的应用相关联的四个域名的四个链接。在建立SSL/TLS会话后,中间装置502(或SNI解析器504)可以将与这些链接相对应的SNI识别为最有可能被客户机102访问,并可向客户机102发送第一消息(或动态脚本510)以使建立与此类链接(或对应服务器106)的连接。当达到会话超时时(或在达到该超时之前,或预期达到该超时时),中间装置502可以发送第二消息(或动态脚本510)以再次预先建立到相同链接的连接。执行动态脚本102可以使客户机102预先建立与这四个链接所关联的服务器106的SSL连接。一旦SSL连接预先建立,客户机102可以在恢复会话后体验更快的加载(例如,通过点击和先前由客户机访问的应用相关联的四个链接中的一个)。特别地,当客户机102的用户在空闲一段时间之后,再次访问应用时,点击其中一个链接,与该链接相关联的资源或数据可以被相对更快地加载到客户机102。更快地加载是因为这样的事实:该链接(或域名)的域名系统(DNS)解析是已经被执行的,SSL/TLS会话是重新建立的,和/或与相应的服务器106的连接是已经建立的。
现在参考图5B,描绘了发起连接的建立的方法520的流程图。可以使用上述系统500来实现方法580的功能。简要概括,客户机和服务器之间的中间装置可以访问应用的历史数据(522)。中间装置可以确定应用的至少一个服务器名称指示(SNI)(524)。该应用可以在客户机上执行,并与服务器建立安全会话。在一些实施例中,中间装置502可以确定应用的类型(526)。中间装置可以确定会话超时值(528)。中间装置可以为与至少一个SNI相对应的每个域名,确定对应域名的会话超时值。中间装置可以发送消息以建立连接(530)。中间装置可以根据每个确定的会话超时值将消息发送到客户机,以使客户机使用安全会话来发起对相应域名的连接的建立。
在一些实施例中,客户机102可以建立SSL/TLS会话来访问来自服务器106的客户机-服务器应用(例如,SaaS应用)或服务器资源。在建立SSL/TLS会话中,客户机102可以向代表服务器106的中间装置502发起SSL握手过程。客户机102和中间装置502可以协商并商定一组定义SSL/TLS会话的会话参数。中间装置502和客户机102可以存储包括所协商的会话参数的会话高速缓存(例如,分别为SSL服务器高速缓存514和SSL客户机高速缓存512)。每个会话高速缓存可以关联有对应的超时值。
参考(522),并且在一些实施例中,中间装置502可以访问应用的历史数据。中间装置502可以使用该历史数据为应用确定SNI。中间装置502可以为客户机102、多个其他客户机102、请求的应用或服务器资源、由服务器群38寄载的其他应用或服务器资源、或它们的组合收集和维护历史访问数据。中间设备可以拦截来自客户机102的对应用或资源的访问请求(例如,统一资源定位符(URL)请求),并记录此类请求的指示(或与之相关的信息)。对于每个客户机102(或相应的用户),中间装置502可以将对被访问的应用资源的指示存储在中间装置502的数据库中,或可由中间装置502访问的数据库中。对于每个客户机-应用对,中间装置502可以在数据库中维护对被访问的应用资源或其统计数据的指示。中间装置502可以为每个应用维护指示与各种客户机102相关联的先前访问事件或访问统计数据的历史数据。中间装置502可以为每个客户机102或相应的用户维护简档。每个简档可以包括指示与该简档相关联的客户机102或用户对应用资源的访问事件(或对应的统计数据)的历史数据。
例如,中间装置502可以从中间装置502可访问的数据库中,访问与发起SSL/TLS会话的客户机102相关联的历史数据、建立SSL/TLS会话时请求的应用或服务器资源、或其组合。中间装置502可以基于该历史数据,识别先前由客户机102(例如,在先前的SSL/TLS会话中)访问的应用的链接(或域名)。中间装置502可以为每个识别的原来请求的应用或服务器资源的链路(或域名),识别访问频率或多个先前的访问事件。
参考(524),在一些实施例中,中间装置502可以确定该应用的SNI。中间装置502可以确定与所建立的SSL/TLS会话相关联的至少一个SNI(或域名)。建立SSL/TLS会话时请求的客户机-服务器应用(例如,SaaS应用)或服务器资源,可以与对应于一个或多个SNI或一个或多个域名的一个或多个其他链接相关联。尽管客户机102可以在建立SSL/TLS会话时指示单个服务器地址或链接,但是一旦建立了SSL/TLS会话,客户机102可以访问由服务器群38的一个或的多个其他服务器106寄载的一个或多个其他资源(例如,网页、文档、基于SaaS的资源、或其组合)。例如,由服务器群寄载的应用可以具有分布在多个服务器106上的组件和/或资源。在访问该应用时,客户机102可以请求或访问该应用的各个页面或资源,并因此访问寄载这些页面或资源的一个或多个服务器106。中间装置502可以确定与SSL/TLS会话(或对应的客户机-服务器应用或服务器资源)相关联的SNI或域名。
中间装置502可基于历史数据,确定在当前建立的SSL/TLS会话期间客户机102最可能访问的应用的链接和/或相应的SNI的集合。例如,所确定的SNI集合可以包括客户机102先前访问的所有SNI(或对应的应用资源),或者仅包括被访问至少给定次数或满足至少给定访问频率的那些SNI。
中间装置502可基于授予客户机102或相应用户的访问权限,确定与所建立的SSL/TLS会话相关联的SNI或对应资源的集合。例如,中间装置502可以根据基于资源的访问控制(RBAC)信息,确定该SNI的集合。RBAC信息可以存储在中间装置502的,或可被中间装置502访问的存储器或存储装置中。RBAC信息可以包括指示客户机102或相应用户的访问权限的信息。中间装置502可以将与所建立的SSL/TLS会话相关联的SNI的集合确定为包括客户机102或相应的用户具有访问权限的SNI。中间装置502可基于RBAC信息、历史数据、指示当前SSL/TLS会话期间访问的链接的数据、或它们的组合,确定该SNI的集合。例如,中间装置502可以首先选择客户机102或相应用户有权访问的所有SNI(或相应的应用或资源)。中间装置502然后可以基于历史数据或指示当前SSL/TLS会话期间被访问链路(或资源)的数据对所选择的SNI进行过滤。例如,中间装置502可以在客户机102可访问的SNI中,仅考虑那些在先前会话中由客户机102或其他客户机102频繁访问的SNI。
参考(526),在一些实施例中,中间装置502可以确定应用的类型。中间装置502可以根据应用的类型确定会话超时值。参考(528),在一些实施例中,中间装置502可以确定会话超时值。中间装置502可以为已建立的会话确定会话超时值,并将会话超时值映射到与至少一个SNI对应的域名。中间装置502可以监控或跟踪所建立的SSL/TLS会话的状态对象。中间装置502可确定在服务器侧和客户机侧的SSL会话超时值,并将所确定的SSL会话超时值映射到与SSL/TLS会话对应的SNI。在服务器侧,中间装置502可以给每个SSL服务器高速缓存512a-n设置或分配相应的SSL会话超时值(或服务器高速缓存超时值)。SSL服务器高速缓存512a-n中的每一个可以包括(或关联)对应的服务器高速缓存超时值。中间装置502可以从与所建立的SSL/TLS会话相关联的SSL服务器高速缓存512中,或从中间装置502的存储器中,访问服务器高速缓存超时值。
在客户机侧,确定与客户机102关联的给定SSL/TLS会话的SSL客户机高速缓存超时值可以依赖于与所建立的SSL/TLS会话关联的应用的类型。在与SSL/TLS会话相关联并且在客户机102上执行的应用是桌面或移动客户端(例如,客户机-服务器应用的实例或本地代理)的情况下,对应的客户机高速缓存超时值可以等于默认值,例如,由中间装置502分配的默认值。例如,中间装置502可以使用函数“SSL_get_default_timeout()”来确定SSL客户机高速缓存超时值。
在与SSL/TLS会话关联并在客户机102上执行的应用是浏览器的情况下,中间装置502可能无法完全控制客户机侧的SSL/TLS会话信息。但是,SSL客户机高速缓存超时值(例如,由浏览器设置)可能小于服务器侧对应的SSL服务器高速缓存的超时值。在这种情况下,中间装置502可以监控中间装置502从客户机102接收“客户机问候”消息(例如,以零作为会话标识(ID))的频率,并且基于这样的频率,推断SSL客户机高速缓存超时值。例如,中间装置502可以确定SSL客户机高速缓存超时值等于以零作为会话标识(ID)的“客户机问候”消息的频率的倒数。中间装置502可以收集和保存历史数据,以确定这样的频率信息。在SSL客户机高速缓存超时值大于对应的SSL服务器高速缓存超时值的情况下的,中间装置502可以从相应的SSL服务器高速缓存超时值推断SSL客户机高速缓存超时值。例如,中间装置502可将SSL客户机高速缓存超时值估计为等于对应的SSL服务器高速缓存超时值(或为其函数)。
中间装置502可将所确定的SSL客户机高速缓存超时值映射到为所建立的SSL/TLS会话所确定的域名或SNI中的每一个。中间装置502可以存储或维护表(或其它数据结构),其将与SSL/TLS会话相关联的域名或SNI中的每一个映射到为SSL/TLS会话所确定的SSL客户机高速缓存超时值。这样的映射信息可用于高效和可靠地管理和重建与所确定的SNI或相应域名的SSL连接。
参考(530),并且在一些实施例中,中间装置502可以发送消息以建立连接。中间装置502可以根据所确定的会话超时值,发送消息给客户机102,以使客户机使用安全会话发起到与至少一个SNI对应的域名的连接的建立。该消息可以包括供客户机102用来发起到域名的连接的建立的参数。在一些实现中,该消息可以包括计算机代码指令(例如,动态脚本510),其由客户机装置102执行时,可以使客户机装置发起与域名或SNI关联的SSL连接的预建立/建立。
中间装置502可以为SSL/TLS会话监控相应的SSL客户机高速缓存超时值,并基于(或根据)相应的SSL客户机高速缓存超时值推送或发送消息到客户机102。中间装置502可将该消息作为服务器发送事件(SSE)或其它消息类型推送或发送到客户机102。一旦检测到SSL/TLS会话的空闲状态,中间装置502可以启动计时器。一旦计时器的值等于或大于SSL客户机高速缓存超时值,中间装置502可以推送或发送消息给客户机102。在一些实现中,先于或预计到计时器的值到达SSL客户机高速缓存超时值,中间装置502可向客户机102推送或发送消息。在这样的实现中,例如,消息可以包括对客户机102将在其处发起预建立SSL连接到域名或相应的服务器106的时间实例和/或触发条件的指示。
在接收到消息之后,客户机102可以发起与中间装置502的简化握手,以重用原来建立的SSL/TLS会话,并且建立到与至少一个SNI相对应的域名的SSL连接。简化SSL握手(或会话重用)可以包括客户机102在“客户机问候”消息或SSL握手的任何子集或变体中向中间装置发送会话ID或会话票证。中间装置502和客户机102可以使用先前协商的会话加密/解密信息,并可跳过重新生成这样的信息,因此,节省了CPU的使用率,减少了握手时交换的数据量,和/或加快握手过程。
例如,在建立SSL/TLS会话后,中间装置502可以识别与被访问的应用关联的链接对应的SNI(例如,被识别为最有可能被客户机102访问),并向客户机102发送第一消息(或动态脚本510),以使得与此类链接(或相应服务器106)的连接建立。当会话超时时,中间装置502可以发送第二消息(或动态脚本510)以再次预先建立到相同链接的连接。执行动态脚本102可以使客户机102与四个链接相关联的服务器106预先建立SSL连接。一旦SSL连接预先建立,客户机102可以在恢复会话时体验更快的加载(例如,在点击与客户机以前访问的应用关联的链接之一时)。当客户机102或相应的用户恢复SSL/TLS会话并请求访问预先建立了连接的域名或链接之一时,由于SSL/TLS会话已经重新建立,并且在客户机请求之前已经预先建立了到域名的连接,客户机102可以体验与该域名关联数据的更快的加载。因此,方法502产生改善的用户体验。
在本文一个或多个实施例的上下文中描述的各种元件,可以单独地或以任何合适的子组合来提供。例如,本文描述的过程可在硬件,软件,或它们的组合中实现。此外,本文描述的过程不限于所描述的特定实施例。例如,本文描述的过程不限于本文描述的特定处理顺序,而是,可以根据需要对过程块进行重新排序、组合、移除或并行或串行地执行,以实现本文阐述的结果。
将进一步理解,本领域技术人员可以对本文已经描述和举例说明的部件的细节、材料和布置上进行各种改变,而不脱离所附权利要求的范围。

Claims (20)

1.一种用于发起连接的建立的系统,所述系统包括:
在客户机和服务器之间的中间装置,所述装置被配置为:
为在客户机上执行并与服务器建立安全会话的应用确定至少一个服务器名称指示符SNI;
为对应于至少一个SNI的每个域名确定相应域名的会话超时值;以及
根据每个会话超时值向客户机发送消息,以使客户机使用所述安全会话发起针对相应域名的连接的建立。
2.根据权利要求1所述的系统,其中,所述安全会话包括安全套接字层(SSL)会话,并且所述消息包括服务器发送事件(SSE)消息。
3.根据权利要求1所述的系统,其中,所述应用被配置为访问所述服务器的基于软件即服务(SaaS)的资源。
4.根据权利要求1所述的系统,其中,所述装置被配置为使用访问所述服务器的一个或多个资源的所述应用的用户的历史数据来确定所述至少一个SNI。
5.根据权利要求1所述的系统,其中,所述装置被配置为根据授予所述应用的用户对所述服务器的一个或多个资源的访问,来确定所述至少一个SNI。
6.根据权利要求5所述的系统,其中,所述访问是根据基于角色的访问控制(RBAC)来授予的。
7.根据权利要求1所述的系统,其中,所述装置被配置为使用以下至少一项来确定会话超时值:所述装置的会话超时参数或所述应用的会话超时参数。
8.根据权利要求1所述的系统,其中如果所述应用包括浏览器,当所述装置的会话超时参数的值大于所述应用的会话超时参数的值时,所述装置被配置为根据来自所述应用的客户机问候消息的频率或间隔来确定第一会话超时值。
9.根据权利要求1所述的系统,其中如果所述应用包括浏览器,当所述装置的会话超时参数的值小于所述应用的会话超时参数的值时,所述装置被配置为根据所述装置的会话超时参数来确定第一会话超时值。
10.根据权利要求1所述的系统,其中建立所述安全会话以供所述应用访问所述服务器的网页,并且所述网页具有与第一域名相关联的链接,并且所述装置还被配置为:
向客户机发送第一消息,以使客户机使用安全会话发起针对第一域名的第一连接的建立;
为第一域名确定第一会话超时值,以及
根据所述第一会话超时值向所述客户机发送第二消息,以使所述客户机使用安全会话发起针对所述第一域名的第二连接的建立。
11.一种用于发起连接的建立的方法,所述方法包括:
由客户机与服务器之间的中间装置,为在客户机上执行并与服务器建立安全会话的应用确定至少一个服务器名称指示符SNI;
由所述装置为对应于至少一个SNI的每个域名,确定相应域名的会话超时值;以及
由所述装置根据每个确定的会话超时值向客户机发送消息,以使客户机使用安全会话发起针对相应域名的连接的建立。
12.根据权利要求11所述的方法,其中所述安全会话包括安全套接字层(SSL)会话,并且所述消息包括服务器发送事件(SSE)消息。
13.根据权利要求11所述的方法,其中所述应用被配置为访问所述服务器的基于软件即服务(SaaS)的资源。
14.根据权利要求11所述的方法,还包括使用访问服务器的一个或多个资源的应用的用户的历史数据来确定至少一个SNI。
15.根据权利要求11所述的方法,进一步包含根据授予所述应用的用户对所述服务器的一个或多个资源的访问来确定所述至少一个SNI。
16.根据权利要求15所述的方法,其中所述访问是根据基于角色的访问控制(RBAC)来授予的。
17.根据权利要求11所述的方法,还包括:使用以下至少一项来确定会话超时值:装置的会话超时参数或应用的会话超时参数。
18.根据权利要求11所述的方法,其中如果所述应用包括浏览器,所述方法还包括:当所述装置的会话超时参数的值大于应用的会话超时参数的值时,根据来自所述应用的客户机问候消息的频率或间隔来确定第一会话超时值。
19.根据权利要求11所述的方法,其中如果所述应用包括浏览器,所述方法还包括:当所述装置的会话超时参数的值小于所述应用的会话超时参数的值时,根据所述装置的会话超时参数来确定第一会话超时值。
20.根据权利要求11所述的方法,其中建立所述安全会话以供所述应用访问所述服务器的网页,并且所述网页具有与第一域名相关联的链接,所述方法还包括:
向所述客户机发送第一消息,以使所述客户机使用安全会话发起针对所述第一域名的第一连接的建立;
为所述第一域名确定第一会话超时值;以及
根据第一会话超时值向客户机发送第二消息,以使所述客户机使用安全会话发起针对所述第一域名的第二连接的建立。
CN201880079753.2A 2017-10-18 2018-10-09 用于基于saas的应用的ssl优化的跟踪ssl会话状态的方法 Active CN111448788B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/787463 2017-10-18
US15/787,463 US10721214B2 (en) 2017-10-18 2017-10-18 Method to track SSL session states for SSL optimization of SaaS based applications
PCT/US2018/055000 WO2019079067A1 (en) 2017-10-18 2018-10-09 METHOD FOR FOLLOWING SSL SESSION STATES FOR SSL OPTIMIZATION OF SAAS-BASED APPLICATIONS

Publications (2)

Publication Number Publication Date
CN111448788A CN111448788A (zh) 2020-07-24
CN111448788B true CN111448788B (zh) 2021-05-11

Family

ID=64083149

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880079753.2A Active CN111448788B (zh) 2017-10-18 2018-10-09 用于基于saas的应用的ssl优化的跟踪ssl会话状态的方法

Country Status (6)

Country Link
US (2) US10721214B2 (zh)
EP (1) EP3698532B1 (zh)
CN (1) CN111448788B (zh)
AU (1) AU2018351990B2 (zh)
CA (1) CA3078936C (zh)
WO (1) WO2019079067A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11323449B2 (en) * 2019-06-27 2022-05-03 Citrix Systems, Inc. Unified accessibility settings for intelligent workspace platforms
US11201897B1 (en) 2019-09-03 2021-12-14 Rapid7, Inc. Secure multiplexed routing
US11297036B1 (en) 2019-09-03 2022-04-05 Rapid7, Inc. Single whitelisted ingress endpoint on 1 and 2 way TLS connections
US11522913B1 (en) 2019-09-03 2022-12-06 Rapid7, Inc. Simplifying networking setup complexity for security agents
US11349930B2 (en) 2019-11-19 2022-05-31 EMC IP Holding Company LLC Identifying and deleting idle remote sessions in a distributed file system
US11308028B2 (en) * 2019-12-23 2022-04-19 EMC IP Holding Company LLC Predicting and deleting idle remote sessions in a distributed file system
WO2021220051A1 (en) * 2020-04-27 2021-11-04 Real Innovations International Llc Secure remote access to historical data
US11588749B2 (en) 2020-05-15 2023-02-21 Cisco Technology, Inc. Load balancing communication sessions in a networked computing environment
US20220129295A1 (en) 2020-10-25 2022-04-28 Meta Platforms, Inc. Server-side hosted environment for a cloud gaming system
CN114244846B (zh) * 2021-12-15 2024-02-09 山石网科通信技术股份有限公司 一种流量报文转发方法、装置,中间设备及存储介质
US20230344812A1 (en) * 2022-04-20 2023-10-26 Bank Of America Corporation System and method for establishing a secure session to authenticate dns requests via dynamically configurable trusted network interface controllers

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1764201A (zh) * 2004-10-18 2006-04-26 捷讯研究有限公司 用于控制协议栈中的上层来延迟超时的方法和设备
US7162454B1 (en) * 2000-07-24 2007-01-09 Donner Irah H System and method for reallocating and/or upgrading and/or selling tickets, other even admittance means, goods and/or services
CN101795289A (zh) * 2009-12-30 2010-08-04 华为技术有限公司 一种远程过程调用控制方法、装置和系统
CN105393220A (zh) * 2013-05-15 2016-03-09 思杰系统有限公司 用于在集群系统中部署点状虚拟服务器的系统和方法
WO2017138850A1 (en) * 2016-02-09 2017-08-17 Telefonaktiebolaget Lm Ericsson (Publ) Method for keeping connection path alive, proxy device and coap compliant end point device
CN107077432A (zh) * 2014-09-29 2017-08-18 阿卡麦科技公司 Https请求充实

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7003571B1 (en) * 2000-01-31 2006-02-21 Telecommunication Systems Corporation Of Maryland System and method for re-directing requests from browsers for communication over non-IP based networks
US9621559B2 (en) * 2006-06-19 2017-04-11 Bomgar Corporation Network apparatus for secure remote access and control
US7624223B2 (en) * 2006-12-29 2009-11-24 Lsi Corporation Apparatus and methods for multiple unidirectional virtual connections among SAS devices
US8375134B2 (en) * 2009-06-08 2013-02-12 Microsoft Corporation Determining an efficient keep-alive interval for a network connection
US8782532B2 (en) * 2011-06-10 2014-07-15 Qualcomm Innovation Center, Inc. Website object-request method and system
US9083691B2 (en) * 2012-09-14 2015-07-14 Oracle International Corporation Fine-grained user authentication and activity tracking
US9491268B2 (en) * 2013-03-01 2016-11-08 Infinite Convergence Solutions, Inc. Method and devices for session timeout management
US9184911B2 (en) 2014-04-08 2015-11-10 Cloudflare, Inc. Secure session capability using public-key cryptography without access to the private key
US9538345B2 (en) 2015-01-28 2017-01-03 Citrix Systems, Inc. Systems and methods for performing load balancing and message routing for short message peer to peer protocol
US20160255047A1 (en) 2015-02-26 2016-09-01 Citrix Systems, Inc. Methods and systems for determining domain names and organization names associated with participants involved in secured sessions
US10609152B2 (en) * 2017-07-11 2020-03-31 Cisco Technology, Inc. Creation of remote direct access path via internet to firewalled device using multi-site session forwarding

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7162454B1 (en) * 2000-07-24 2007-01-09 Donner Irah H System and method for reallocating and/or upgrading and/or selling tickets, other even admittance means, goods and/or services
CN1764201A (zh) * 2004-10-18 2006-04-26 捷讯研究有限公司 用于控制协议栈中的上层来延迟超时的方法和设备
CN101795289A (zh) * 2009-12-30 2010-08-04 华为技术有限公司 一种远程过程调用控制方法、装置和系统
CN105393220A (zh) * 2013-05-15 2016-03-09 思杰系统有限公司 用于在集群系统中部署点状虚拟服务器的系统和方法
CN107077432A (zh) * 2014-09-29 2017-08-18 阿卡麦科技公司 Https请求充实
WO2017138850A1 (en) * 2016-02-09 2017-08-17 Telefonaktiebolaget Lm Ericsson (Publ) Method for keeping connection path alive, proxy device and coap compliant end point device

Also Published As

Publication number Publication date
EP3698532A1 (en) 2020-08-26
CN111448788A (zh) 2020-07-24
EP3698532B1 (en) 2021-08-04
US20190116160A1 (en) 2019-04-18
WO2019079067A1 (en) 2019-04-25
CA3078936A1 (en) 2019-04-25
US10721214B2 (en) 2020-07-21
AU2018351990B2 (en) 2021-04-08
CA3078936C (en) 2021-06-01
AU2018351990A1 (en) 2020-04-23
US20200351251A1 (en) 2020-11-05

Similar Documents

Publication Publication Date Title
US11418613B2 (en) Systems and methods for recording metadata about microservices for requests to the microservices
CN111448788B (zh) 用于基于saas的应用的ssl优化的跟踪ssl会话状态的方法
US11388085B2 (en) Method for optimal path selection for data traffic undergoing high processing or queuing delay
CA3074825C (en) Rdp proxy support in presence of rdp server farm with session directory or broker
US11089113B2 (en) Systems and methods to retain existing connections so that there is no connection loss when nodes are added to a cluster for capacity or when a node is taken out from the cluster for maintenance
US11586484B2 (en) Automatically replicate API calls to separate data centers
US10798026B2 (en) Bufferbloat recovery and avoidance systems and methods
US11647083B2 (en) Cluster-aware multipath transmission control protocol (MPTCP) session load balancing

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
GR01 Patent grant
GR01 Patent grant