一、概述
1、起源
我们知道,早期的传统的互联网(Internet)应用,Web应用是基于万维网协议(HTTP,Hypertext Transfer Protocol)。而HTTP不具备安全机制,采用明文形式传输数据,不能验证通信双方的身份,无法防止传输的数据被篡改,安全性很低。为了确保HTTP报文的安全性,人们首先使用了安全套接字层(SSL)协议。
安全套接字层(SSL,Secure Sockets Layer)协议是由美国网景(Netscape)公司于1995年提出的,专门为Web应用的HTTP数据传输提供安全性保障。它是在套接字端口上工作,可以用在任何建立在套接字端口上的协议,包括http、telnet、ftp等等。对于HTTP使用了SSL,可称之为HTTPS,HTTPS报文(数据)的传输可用下图1-1示意。
图 1-1:HTTP报文与HTTPS报文的传输示意
SSL协议是在Internet基础上提供的一种保证私密性的安全协议,它是在传输通信协议(TCP/IP)上实现的一种安全协议,它主要是由握手协议和记录协议等协议徐所构成。SSL通过握手协议在客户端和服务器之间建立会话,完成通信双方身份的验证、密钥和加密套件的协商,从而确保客户端与服务器之间的通信不被窃听,保证网络上数据传输的安全性。它提供三大安全服务:机密性;完整性和身份认证,具体详见下表1-1的描述。握手成功后,记录协议负责在安全通道中实际传输应用数据(如HTTP请求、电子邮件等)。由此可简单比喻为:SSL就像在一条公共水管(网络)内,建立了一条坚固、加密的专用管道,确保管道内的水(数据)安全、完整地流向指定目的地,并且你能确认接收水的水龙头(服务器)是真实可信的。
表 1-1:SSL协议提供的三大安全服务
2、SSL的演进与TLS
SSL协议由网景(Netscape)公司于上世纪九十年代中期开发的,当初的第1个版本(SSL 1.0)由于存在严重安全缺陷,未公开发布。其正式发布的是SSL 2.0,于1995年公开发布;并于1996年发布了SSL 3.0版本。而后由IETF接手并标准化,起名为TLS(Transport Layer Security),于1999在SSL 3.0基础上发布了TLS 1.0(即RFC 2246);又分别于2006年、2008年和2018年发布了TLS 1.1、TLS 1.21和TLS 1.3,目前TLS 1.3成为了最佳实践和部署方向,正被普及。SSL与TLS的演进过程详见下表1-2的描述,包括时间线、特征等。
表 1-2:SSL与TLS的演进过程
需要指出的是:由表可知,技术上,“SSL”应专指3.0及以前的版本,但这些版本均已废弃。但由于历史习惯,人们仍广泛使用“SSL”一词来泛指整个安全协议家族,包括TLS。例如,“SSL证书”实际指的是用于TLS协议的X.509证书;“启用SSL”通常意味着启用TLS。因此,在严谨的技术讨论和配置中,应使用“TLS”这一准确术语。在当今的服务器和客户端配置中,应明确禁用SSL 2.0/3.0和TLS 1.0/1.1,并优先支持 TLS 1.2 和 TLS 1.3。TLS 1.2 是当前广泛使用的稳定版本,而 TLS 1.3 代表了今后的方向,提供了更优的速度和安全性。
二、SSL/TLS的工作原理简述
1、协议结构
如下图2-1所示,SSL/TLS位于应用层和传输层之间。SSL/TLS协议分为两层:底层是SSL/TLS记录协议(SSL record protocol);上层是SSL/TLS握手协议(SSL handshake protocol)、SSL密码变化协议(SSL change cipher spec protocol)和SSL警告协议(SSL alert protocol)。下表2-1是对这四个协议的简介。
图 2-1:SSL/TLS的协议结构
表 2-1:SSL/TLS协议族的简介
2、握手过程
SSL/TLS通过握手在客户端和服务器之间建立会话,完成双方身份的验证、密钥和加密套件的协商,握手过程如下图2-2所示。除Change Cipher Spec消息属于SSL密码变化协议外,其它握手过程交互的消息均属于SSL握手协议,统称为SSL握手消息。其中,服务器对SSL客户端的身份验证是可选的,即图中蓝色部分标识的内容(步骤4、6和8)为可选。下表2-2是对握手过程的说明。
图 2-2:SSL/TLS握手过程示意图
表 2-2:SSL/TLS握手过程说明
3、数据传输过程
握手完成后,客户端和服务器即可以交换应用层数据。在SSL/TLS中,实际的数据传输是使用SSL/TLS记录协议来实现的。下图2-3描述了数据传输过程。记录协议接收传输的应用数据,将数据分片成可管理的块,进行数据压缩(可选),添加消息验证码(MAC,Message Authentication Code),接着利用加密算法进行数据加密,最后增加SSL/TLS记录报头。被接收的数据刚好与接收数据的工作过程相反,依次被解密、验证、解压缩和重新装配。
图 2-3:SSL/TLS的数据传输过程
4、协议的安全机制
SSL/TLS协议实现的安全机制包括:身份验证机制;数据传输的机密性和消息完整性验证。
身份验证机制基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的。SSL/TLS协议的安全机制需要有证书配合一块使用才能实现。SSL/TLS使用证书对通信双方之间建立的连接的两端进行身份认证,并使用证书对加密的通信信道进行协商,从而确保安全。SSL/TLS协议使用的证书应符合ITU X. 509建议书的要求。数据传输的机密性是利用对称密钥算法对传输的数据进行加密。消息完整性验证即消息传输过程中使用消息验证码(MAC)算法来检验消息的完整性。
欲详细了解ITU X. 509建议书内容介绍的请进入。
三、关于SSL/TLS VPN
1、概述
SSL/TLS VPN是通过SSL/TLS协议实现远程安全接入的虚拟专用网(VPN,Virtual Private Network)技术(下述简称SSL VPN)。SSL VPN充分利用了SSL/TLS协议提供的基于证书的身份认证、数据加密和消息完整性验证机制,可以为应用层之间的通信建立安全连接。因为SSL协议内置于浏览器中,使用SSL协议进行认证和数据加密的SSL VPN可以免于安装客户端。SSL VPN通常适用于Client to Site(客户端到站点)的组网(如下图3-1所示),只要求远程用户使用支持SSL的标准浏览器安装指定插件即可进行访问,通过数据中心部署VPN网关进行集中管理和维护,因此配置部署更简单,维护成本相对较低。
图 3-1:SSL VPN组网示意
之所以组织SSL VPN,是因为企业出差员工和居家办公员工,需要在外地远程办公,并期望能够通过Internet随时随地的远程访问企业内部资源。同时,企业为了保证内网资源的安全性,希望能对移动办公用户进行多种形式的身份认证,并对移动办公用户可访问内网资源的权限做精细化控制。
欲更多了解虚拟专用网(VPN)介绍的请进入。
2、应用场景
移动办公用户使用终端(如便携机、PAD或智能手机)与企业内部的SSL VPN服务器建立SSL VPN隧道以后,就能通过SSL VPN隧道远程访问企业内网的Web服务器、文件服务器、邮件服务器等资源,其应用如下图3-2所示。移动办公用户访问企业内网的服务器时,首先与SSL VPN服务器之间建立起安全连接(SSL VPN隧道),采用标准的SSL协议对传输的数据包进行加密。登录SSL VPN服务器时,用户访问SSL VPN服务器登录界面,SSL VPN服务器会对用户身份进行认证。SSL VPN服务器往往支持多种用户认证方式,来保证访问的安全性、合法性。然后SSL VPN服务器将报文转发给特定的内部服务器,从而使得移动办公用户在通过验证后,可访问企业内网中管理员分配指定的服务器资源。SSL VPN可以借助Web浏览器覆盖所有的远程访问需求。
图 3-2:SSL VPN应用场景
3、SSL VPN与IPsec VPN
我们知道,IPsec VPN和SSL VPN技术都可以支持远程接入这个应用场景。然而,IPsec VPN通常适用于Site to Site(站点到站点)的组网,要求站点分别部署VPN网关或远程用户安装专用的VPN客户端,因此配置部署复杂度和维护成本都比较高,如下图3-3所示。而SSL VPN通常适用于Client to Site(客户端到站点)的组网。
图 3-3:IPsec VPN应用场景
作为一种轻量级VPN 技术,SSL VPN安全性不输于IPsec VPN,且能实现更为精细的资源控制和用户隔离。不需要安装客户端,浏览器登录的便捷性也让SSL VPN在企业和机构员工中更易于推广使用。SSL VPN工作在传输层和应用层之间,不会改变IP报文头和TCP报文头,不会影响原有网络拓扑,也不需要安装客户端。因此部署、配置和维护SSL VPN都比较简便和低成本。下表3-3给出了两者的特征比较。
表 3-3:SSL VPN与IPsec VPN的特征比较
欲更多了解IPsec协议技术内容介绍的请进入。
欲进一步了解SSL协议介绍的请进入。