HTTPS协议详解

        上一篇文章中我们介绍了HTTP协议,HTTP协议的简单高效特点确实在其推广过程中起到了非常大的作用,但是随着大众对隐私的保护越发的重视,HTTP明文传输的特点已经越来越无法满足人们日益严苛的隐私保护需求。HTTPS在HTTP的基础上应运而生,HTTPS并不是从0开始设计的一种协议,二是站在HTTP的基础上进行加密。

HTTPS协议详解_第1张图片

一:HTTPS版本迭代历程

HTTPS协议详解_第2张图片

        TLS最初是由网景公司开发的,用于保护Web浏览器和服务器之间的通信。最早的版本是SSL 1.0,但由于存在安全漏洞而被废弃。SSL 2.0和SSL 3.0随后推出,但也存在安全漏洞。TLS 1.0于1999年发布,是SSL 3.0的升级版,修复了一些安全漏洞。TLS 1.1和TLS 1.2分别于2006年和2008年发布,进一步增强了安全性和性能。

二:HTTPS建立连接的流程

HTTPS协议详解_第3张图片

具体流程如下:

      第一步:客户端向服务端发起请求

      a.  客户端生成随机数R1 发送给服务端

      b.  告诉服务端自己支持哪些加密算法和哈希算法

      第二步:服务器向客户端发送数字证书

      a.  服务端生成随机数R2

      b.  从客户端支持的加密算法中选择一种双方都支持的加密算法(此算法用于后面的会话密钥生成)和哈希算法用机构的证书公钥解密得到证书的内容和证书签名

      c.  服务端生成把证书、随机数R2、会话密钥生成算法,一同发给客户端

      第三步:客户端验证数字证书。

       这一部分是浏览器内置的 TSL 完成的:

       a.  首先浏览器会从内置的证书列表中索引,找到服务器下发证书对应的机构,如果没有找到,此时就会提示用户该证书是不是由权威机构颁发,是不可信任的。如果查到了对应的机构,则取出该机构颁发的公钥、会话密钥生成算法、随机数R2。
       b.  用机构的证书公钥解密得到证书的内容和证书签名,内容包括网站的网址、网站的公钥、证书的有效期等。浏览器会先验证证书签名的合法性。签名通过后,浏览器验证证书记录的网址是否和当前网址是一致的,不一致会提示用户。如果网址一致会检查证书有效期,证书过期了也会提示用户。这些都通过认证时,浏览器就可以安全使用证书中的网站公钥了。
       c.  浏览器生成一个随机数 R3,根据会话密钥算法使用R1、R2、R3生成会话密钥。

       d.  用服务端证书的公钥加密随机数R3并发送给服务端。

      注意:以上其实就是 HTTPS 的握手过程,这个过程主要是认证服务端证书(内置的公钥)的合法性。因为非对称加密计算量较大,整个通信过程只会用到一次非对称加密算法(主要是用来保护传输客户端生成的用于对称加密的随机数私钥)。后续内容的加解密都是通过一开始约定好的对称加密算法进行的。

      第四步:服务器得到会话密钥

      a.  服务器用私钥解密客户端发过来的随机数R3

      b.  根据会话密钥算法使用R1、R2、R3生成会话密钥

      第五步:客户端与服务端进行加密会话

      1) 客户端发送加密数据给服务端

      发送加密数据:客户端加密数据后发送给服务端。

      2)服务端响应客户端

      解密接收数据:服务端用会话密钥解密客户端发送的数据

      加密响应数据:用会话密钥把响应的数据加密发送给客户端。

      3)客户端解密服务端响应的数据

      解密数据:客户端用会话密钥解密响应数据

三:HTTPS报文

1,三次握手

HTTPS协议详解_第4张图片

2,ClientHello

HTTPS协议详解_第5张图片

3,ServerHello

HTTPS协议详解_第6张图片

你可能感兴趣的:(Others,https)