网络协议 -- HTTPS(3)SSL/TSL协议

一、现在开始聊HTTPS

前面的《网络协议 – HTTP协议》我们介绍了HTTP协议,然后又写了几篇关于HTTPS的预备知识的文章,现在开始正式介绍HTTPS。

在HTTP请求过程中,客户端与服务端之前没有进行身份确认,而且传输的数据都没有加密处理,所以很容易被劫持和篡改。

基于HTTP协议的这些弊端,后面就出现了HTTPS严格的说,HTTPS并不是一个协议,所以前面文章都没有使用“HTTPS协议”),HTTPS是基于SSL/TSL协议的,说白了就是HTTP+SSL/TSL,可以把HTTPS大致理解为“HTTP Over SSL”或者“HTTP Over TSL”

HTTP, SSL/TSL, HTTPS的关系如下图:
网络协议 -- HTTPS(3)SSL/TSL协议_第1张图片

二、SSL/TSL协议

2.1 SSL

SSL(英文:Secure Sockets Layer的缩写)中文叫“安全套接层”。最开始由NetScape公司研发,用以保障互联网上数据传输的安全,利用数据加密技术确保数据在网络上之传输过程中不会被截取及窃听。
SSL协议在TCP/IP协议栈中位于传输层应用层之间。以HTTPS为例,SSL协议就位于TCP和HTTP之间:
这里写图片描述

2.2 TLS

TLS(英文:Transport Layer Security的缩写)中文叫“传输层安全协议”,TLS 1.0是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本,可以理解为SSL 3.1,它定义在RFC5246中。

因为TLS是基于SSL 3.0的,所以也可以认为TLS是SSL的加强版。

我们一般将二者并称为SSL/TSL协议,因为这二者可以视为同一个产品的不同阶段。

三、SSL/TSL协议的握手过程

在了解SSL/TSL协议的握手过程之前,需要先阅读关于HTTPS的前几篇文章,对相关预备知识有所了解。

网络协议 -- HTTPS(3)SSL/TSL协议_第2张图片

参考上面的流程图,握手过程可以分为4个步骤:

1). 客户端发送Client Hello请求到服务端,包含如下内容:

  • SSL或TSL协议的版本
  • 客户端生成的随机串Client random
  • 客户端支持的加密算法列表,用于客户端和服务端加密算法的协商;
  • 客户端支持的HASH算法;

2). 服务端发送Sever Hello响应到客户端,包含如下内容:

  • 服务端生成的随机串Server random(第3步会用到);
  • 由“CA证书机构”颁发的证书的Public key部分(Public keyPrivate Key为一对,用于非对称加密和解密);
  • 会话ID
  • 协商的加密算法(对称加密和非对称加密)和HASH算法。

3). 客户端发送Client Key到服务端,包含如下内容或步骤:

  • 检查服务端返回的“证书”的有效性,如果无效则在浏览器上显示警告。
  • 客户端使用前2步生成的Client randomServer random作为随机因子,生成另外一个随机串Premaster
  • 使用Public key(第2步服务端返回)非对称加密的随机串Premaster

4). 服务端通知客户端握手结束,包含如下内容:

  • 通过解密出来的Premaster生成的本次会话的Session key
  • 前面所有握手内容的HASH值,供客户端校验。

参考:
http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html

你可能感兴趣的:(☆,网络编程,网络协议)