HTTPS的原理及连接流程.md

2018-07-17  本文已影响34人  sunnyxibei

HTTP vs HTTPS

HTTP缺点 解决方案 问题范畴
通信使用明文(不加密),内容可能被窃听 采用SSL/TLS加密通信 加密
不验证通信方的身份,因此有可能遭遇伪装 使用值得信任的第三方机构办法的证书来确定通信方 证书
无法验证报文的完整性,有可能已遭篡改 MAC(Message Authentication Code)报文摘要 完整性保护

HTTPS概念

HTTP+加密+认证+完整性保护=HTTPS(HTTP Secure)

HTTP加上加密处理和认证以及完整性保护后即是HTTPS

HTTPS并非是应用层的一种新协议。只是HTTP通信接口部分使用SSL(Secure Socket Layer)/TLS(Transport Layer Security)协议替代而已。所以,HTTPS是身披SSL外壳的HTTP。

HTTPS建立连接的过程

非对称加密,客户端公钥加密,服务端私钥解密。

相对于对称加密,非对称加密的处理速度要慢一些。

HTTPS建立连接的流程:

第一阶段(握手协商)

  1. 客户端通过发送Client Hello报文开始SSL通信。报文中包含客户端支持的SSL的制定版本、加密组件列表(所使用的算法及密钥长度)
  2. 服务端一Server Hello报文作为应答。和客户端一样,在报文中包含SSL版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的
  3. 服务器发送Certificate报文。报文中包含公钥证书,当然这个公钥证书是使用CA机构的私钥加密过的,同时证书上有数字签名,以便客户端校验。
  4. 服务器发送Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束。

第二阶段

  1. SSL第一次握手结束之后,客户端以Client Key Exchange报文作为回应。报文中包含在后续通信加密中使用的“Pre-master secret”的随机密码串。该报文使用服务器的公钥进行加密。
  2. 紧接着客户端发送Change Cipher Spec报文。该报文会提示服务器,在此之后的通信会采用Pre-master secret密钥加密
  3. 客户端发送Finished报文,该报文包含连接至今全部报文的整体报文校验值
  4. 服务器同样发送Change Cipher Spec报文。
  5. 服务器同样发送Finished报文。
  6. 服务器和客户端的Finished报文交换完成后,SSL连接建立完成。通信会受到SSL的保护,从此处开始应用层协议的通信,即发送HTTP请求

Http通信阶段

  1. 应用层HTTP通信,发送HTTP响应

断开链接

  1. 最后由客户端断开连接。断开连接时,发送close_notify报文。然后再发送TCP FIN来关闭与TCP的通信。

HTTPS完整性保护

在以上流程中,应用层发送数据时会附加一种叫做MAC(Message Authentication Code)报文摘要,用来校验报文的完整性。

HTTPS的缺点

使用SSL时,处理速度会变慢,增加服务器和客户端的负载,非敏感信息可以直接使用HTTP

上一篇 下一篇

猜你喜欢

热点阅读