网络协议-HTTPS

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请求和响应
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容