HTTP与SSL协议

一、HTTP协议简要分析

**

1、概念解析

**
1.)什么是超文本?(HyperText)
超文本是包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。
2.)什么是URL?
能唯一地标识万维网中的某一个文档。URL由协议、主机和端口(默认为80)以及文件名三部分构成。
例如:
HTTP与SSL协议_第1张图片
协议:// 主机:端口号(80) 文件名及其路径

3).什么是超文本传输协议
HTTP(Hyper Text Transfer Protocol超文本传输协议)是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能,即就是一个文本里包含了跳转到其他文本的超链接。

2、HTTP的工作原理

在用户点击URL为http://www.qq.com/index.html的链接后,浏览器和Web服务器执行以下动作:

HTTP与SSL协议_第2张图片
如图所示:
①客户浏览器首先查看本地缓存,查看自己对这个链接是否有记录
②若浏览器无缓存则会查看本主机host文件中是否由缓存
③本主机host文件无缓存,浏览器分析超链接中的URL
④浏览器向DNS请求解析www.qq.com的IP地址
⑤DNS将解析出来的IP地址222.246.129.80返回浏览器
⑥浏览器拿解析出来的IP地址与服务器建立TCP的连接(端口号为80)
⑦浏览器向Web服务器发出Http请求报文同时发出请求文档(GET/zhang.html);
⑧Web服务器向浏览器发出Http响应报文同时发出响应文档给浏览器(Index.html);
⑨释放TCP的连接;(因为HTTP是无状态的协议,一个是无状态(请求完以后就释放掉了) 一个是无链接(每次请求跟上一次没关系,服务器对一个主机的上一次请求是无记忆的) 做成无状态、无链接主要是为了服务器方便,减轻服务器的负荷);
⑩客户机浏览器上显示Inde.html的页面内容;

HTTP的连接方式和无状态性
非持久性连接:即浏览器每请求一个Web文档,就创建一个新的连接,当文档传输完毕后,连接就立刻被释放。
HTTP1.0、HTTP0.9采用此连接方式。
对于请求的Web页中包含多个其他文档对象(如图像、声音、视频等)的链接的情况,由于请求每个链接对应的文档都要创建新连接,效率低下。
持久性连接:即在一个连接中,可以进行多次文档的请求和响应。服务器在发送完响应后,并不立即释放连接,浏览器可以使用该连接继续请求其他文档。连接保持的时间可以由双方进行协商。
无状态性:是指同一个客户端(浏览器)第二次访问同一个Web服务器上的页面时,服务器无法知道这个客户曾经访问过。HTTP的无状态性简化了服务器的设计,使其更容易支持大量并发的HTTP请求。

3、Session和Cookie

Session是可以存储针对于某一个用户的浏览器以及通过其当前窗口打开的任何窗口具有针对性的用户信息存储机制。 (例如你打开一个查询系统 ,输入你的用户名及密码,当你浏览完自己的需要的信息后关闭浏览器,在一定时间内你再次的访问查询系统是不需要你再次输入用户名和密码的)。通常大家认为,只要关闭浏览器,session就消失,其实这是错误的理解。对session来说也是一样的,除非程序通知服务器删除一个session,否则服务器会一直保留。由于关闭浏览器不会导致session被删除,迫使服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间。
(1)第一次访问某个web站点资源时,客户端提交没有带SessionID的请求(请求报文头没有Cookie头域信息)。 而web服务器会检查是否有SessionID过来,没有则创建SessionID,并根据web程序自身定义在请求哪个资源时添加属于当前会话的信息(也可为空),这个信息列表以SessionID作为标识。然后将SessionID返回给客户端(通过响应报文头的Set-Cookie头域)。
(2 )客户端再次访问同个web站点时,提交带有SessionID的请求(通过Cookie头域存储SessionID)。由服务端判断session是否失效,如果未失效,可查询属于当前会话的信息列表。如果失效,则创建新的session(产生新的SessionID),而原先的session(包含session带的信息列表)则丢失,无法访问。
Cookie保存SessionID的方式可以采用Cookie(也可以采用其他的技术来保存Session ID比如URL重写技术),这样在交互过程中浏览器可以自动的按照规则把这个SessionID发回给服务器。
Cookie的命名方式类似于SessionID。有时Cookie被人为的禁止,所以出现了其他机制以便在Cookie被禁止时仍然能够把SessionID传递回服务器。这种技术叫做URL重写,就是把SessionID直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为http://www.wantsoft.com/index.asp;jsessionid= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 。另一种是作为查询字符串附加在URL后面,表现形式为http://www.wantsoft.com/index?js … 99zWpBng!-145788764

二、SSL协议概述

1、SSL协议的特点
Ⅰ、SSL协议可用于保护正常运行于TCP之上的任何应用协议,如HTTP、FTP、SMTP或Telnet的通信,最常见的是用SSL来保护HTTP的通信。

Ⅱ、SSL协议的优点在于它是与应用层协议无关的。高层的应用协议(如HTTP、FTP、Telnet等)能透明地建立于SSL协议之上。

Ⅲ、SSL协议在应用层协议之前就已经完成加密算法、通信密钥的协商以及服务器的认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的安全性。
2、SSL的功能
Ⅰ、客户对服务器的身份认证
SSL服务器允许客户的浏览器使用标准的公钥加密技术和一些可靠的认证中心(CA)的证书,来确认服务器的合法性。
Ⅱ、服务器对客户的身份认证
也可通过公钥技术和证书进行认证,也可通过用户名,password来认证。
Ⅲ、建立服务器与客户之间安全的数据通道
SSL要求客户与服务器之间的所有发送的数据都被发送端加密、接收端解密,同时还检查数据的完整性
3、SSL协议的分层模型
SSL协议是一个分层的协议,共有两层组成。处于SSL协议的底层的是SSL记录层协议(SSL Record Protocol),它位于可靠的传输层协议(如TCP)之上,用于封装高层协议的数据。其中SSL握手协议(SSL Handshake Protocol)允许服务方和客户方互相认证,并在应用层协议传送数据之前协商出一个加密算法和会话密钥
HTTP与SSL协议_第3张图片
记录层的功能
①保护传输数据的私密性,对数据进行加密和解密
②验证传输数据的完整性,计算报文的摘要
③提高传输数据的效率,对报文进行压缩
④保证数据传输的可靠和有序
SSL握手协议的功能:
①协商SSL协议的版本
②协商加密套件
③协商密钥参数
④验证通讯双方的身份(可选)
⑤建立SSL连接
SSL握手协议的握手过程
无客户端认证的全握手过程HTTP与SSL协议_第4张图片
有客户端认证的全握手过程
HTTP与SSL协议_第5张图片
会话恢复过程
HTTP与SSL协议_第6张图片

4、SSL连接与SSL会话
SSL连接:
一个连接是一个提供一种合适类型服务的传输(OSI分层的定义)。
SSL的连接是点对点的关系。
连接是暂时的,每一个连接和一个会话关联。
SSL会话
一个SSL会话是在客户与服务器之间的一个关联。会话由Handshake Protocol创建。会话定义了一组可供多个连接共享的密码安全参数。
会话用以避免为每一个连接提供新的安全参数所需昂贵的协商代价
5、SSL的一些问题
Ⅰ、客户端假冒
因为SSL协议设计初衷是对Web站点及网上交易进行安全性保护,使消费者明白正在和谁进行交易要比使商家知道谁正在付费更为重要,为了不致于由于安全协议的使用而导致网络性能大幅下降, SSL协议并不是默认地要求进行客户鉴别,这样做虽然有悖于安全策略,但却促进了SSL的广泛应用。
针对这个问题,可在必要的时候配置SSL协议,使其选择对客户端进行认证鉴
Ⅱ、无法保护UDP应用
SSL协议需要在握手之前建立TCP连接,因此不能对UDP应用进行保护。如果要兼顾UDP协议层之上的安全保护,可以采用IP层的安全解决方案。
Ⅲ、SSL协议不能对抗流量分析
由于SSL只对应用数据进行保护,数据包的IP头和TCP头仍然暴露在外,通过检查没有加密的IP源和目的地址以及TCP端口号或者检查通信数据量,一个通信分析者依然可以揭示哪一方在使用什么服务,有时甚至揭露商业或私人关系的秘密。
Ⅳ、进程中主密钥泄漏
除非SSL的工程实现大部分驻留在硬件中,否则主密钥将会存留在主机的主存储器中,这就意味着任何可以读取SSL进程存储空间的攻击者都能读取主密钥,因此,不可能面对掌握机器管理特权的攻击者而保护SSL连接,这个问题要依靠用户管理策略来解决。

你可能感兴趣的:(HTTP与SSL协议)