美文网首页
HTTPS的原理及连接流程.md

HTTPS的原理及连接流程.md

作者: sunnyxibei | 来源:发表于2018-07-17 21:23 被阅读34次

    HTTP vs HTTPS

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

    HTTPS概念

    • 从解决Http的缺点的角度来看:

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

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

    • 从通信协议的角度来看:

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

    HTTPS建立连接的过程

    • 对称加密和非对称加密

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

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

    • 在客户端和服务端交换密钥环节,使用非对称加密方式。
    • 在建立通信之后的交换报文阶段,则使用对称加密方式。
    • 证明密钥正确性:
      • 由CA数字证书认证机构背书
      • 客户端在接收到数字证书之后,可以使用CA的公钥,对数字证书的数字签名进行校验,一旦验证通过,客户端变可以明确两件事情:一、认证服务器的公开密钥是真实有效的数字证书认证机构,二、服务器的公开密钥是值得信赖的。

    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

    相关文章

      网友评论

          本文标题:HTTPS的原理及连接流程.md

          本文链接:https://www.haomeiwen.com/subject/szygpftx.html