美文网首页
网络协议-HTTPS

网络协议-HTTPS

作者: lieon | 来源:发表于2021-05-21 11:23 被阅读0次

    HTTPS

    • HTTPS(Hyper Text Transfer Protocol Secure):超文本传输安全协议
      • 常称为HTTP over TLS, HTTP over SSL, HTTP Secure
    • HTTPS的默认端口是443
    • HTTPS是在HTTP的基础上使用SSL/TLS来加密报文,对窃听和中间人提供合理的防护
    • SSL/TLS也可以用在其他协议上,比如 FTP -> FTPS, SMTP -> SMTPS

    SSL/TLS - 工作在哪一层

    SSL/TLS - 工作在哪一层
    • SSL / TLS 工作在应用层和传输层之间

    HTTPS的通信过程

      1. TCP的3次握手
      1. TLS的连接
      1. HTTP请求和响应

    TLS 的连接

    TLS 的连接
    • 1.Client Hello,客户端向服务端打招呼(TLS层)发送的数据内容如下

      • TSL的版本号
      • 支持的加密组件(Cipher Suite)列表,加密组件是指所有的加密算法及密钥长度
      • 一个随机数(Client Random)


      1. Server Hello,服务端响应,响应数据如下
      • TLS的版本号
      • 选择的加密组件(是从接收到的客户端加密组件列表中挑选出来的)
      • 一个随机数(Server Random)


      1. 发送证书(Certificate)
      • 服务器的公钥证书(被CA签名过的)


    • Server Key Exchange

      • 用以实现ECDHE算法的其中一个参数(Server Params)
        • ECDHE是一种密钥交换算法
        • 为了防止伪造,Server Params经过了服务器私钥签名


    • 5 Server Hello Done

      • 告知客户端:协商部分结束


      • 目前为止:客户端和服务器之间通过明文共享了 ClientRandom、Server Random、Server Params

      • 而且,客户端已经拿到了服务器的公钥证书,接下来,客户端会验证证书的真实性

      1. Client Key Exchange(用公钥进行了加密)
      • 用以实现ECDHE算法的另一个参数(Client Params)


    • 目前为止。客户端和服务器都用来了ECDHE算法的2个参数:Server Params,Client Params

    • 客户端,服务器都可以

      • 使用ECDHE算法根据ServerParam,Client Params计算出一个新的随机密钥串: Pre-master secret
      • 然后结合Client Random,Server Random,Pre-master secret生成一个主密钥
      • 最后利用主密钥衍生出其他密钥:客户端发送用的会话密钥,服务端发送的用的会话密钥等
      1. Change Cipher Spec
      • 告知服务器:之后的通信采用计算出来的会话密钥进行加密


      1. Finished
      • 包含连接至今全部报文的整体校验值(摘要),加密之后发送给服务器
      • 这次握手协商是否成功,要服务器是否能够正确解密报文作为判定标准
    • 9.Change Cipher Spec

      • 告知客户端:服务端解密没有问题,之后的通信采用计算出来的会话密钥进行加密
      1. Finished
      • 到目前为止,客户端服务器都验证加密解密没问题,握手正式结束
      • 后面开始传输加密的HTTP请求和响应

    相关文章

      网友评论

          本文标题:网络协议-HTTPS

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