HTTPS(TLS1.2连接过程解析 - 基于ECDHE密钥交换算法)

HTTPS(HyperText Transfer Protocol Secure), 译为: 超文本传输安全协议, 常称为HTTP over TLS、HTTP over SSL、HTTP Secure (HTTPS的默认端口号是443(HTTP是80))

当在浏览器导航栏上输入: http://www.baidu.com, 会被重定向到: https://www.baidu.com上

SSL/TLS

HTTPS是在HTTP的基础上使用SSL/TLS来加密报文, 对窃听和中间人攻击提供合理的防护

SSL/TLS也可以用在其他协议上, 比如: FTP -> FTPS,  SMTP -> SMTPS

TLS(Transport Layer Security), 译为: 传输层安全性协议, 前身是SSL(Secure Sockets Layer),译为: 安全套接层

历史版本信息:
SSL 1.0: 因存在严重的安全漏洞,从未公开过
SSL 2.0: 1995年,已于2011年弃用(RFC 6176)
SSL 3.0: 1996年,已于2015年弃用(RFC 7568)
TLS 1.0: 1999年(RFC 2246)
TLS 1.1: 2006年(RFC 4346)
TLS 1.2: 2008年(RFC 5246)
TLS 1.3: 2018年(RFC 8446)

SSL/TLS - 工作层次

界于应用层和运输层之间

使用HTTPS的成本

  • 证书的费用
  • 加解密计算
  • 降低了访问速度

有些企业的做法是: 包含敏感数据的请求才使用HTTPS, 其他保持使用HTTP

HTTPS的通信过程: 
   ① TCP的3次握手
   ② TLS的连接
   ③ HTTP请求和响应

TLS 1.2的连接

TLS连接的主要步骤如下:

wireshark抓包:

 

① - Client Hello

重要参数:

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

② - Server Hello

重要参数:

  • TLS的版本号
  • 一个随机数 (Server Random)
  • 选择的加密组件, 是从接收到的客户端加密组件列表中挑选出来的

③ - Certificate

重要参数:

  • 服务器的公钥证书(被CA签名过的)

④ - Server Key Exchange

重要参数:

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

⑤ - Server Hello Done

作用: 

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

目前为止, 客户端和服务器之间通过明文共享了: Client Random、Server Random、Server Params。而且, 客户端也已经拿到了服务器的公钥证书, 接下来, 客户端会验证证书的真实有效性

⑥ - Client Key Exchange

重要参数:

  • 用以实现ECDHE算法的另一个参数 (Client Params)

目前为止, 客户端和服务器都拥有了ECDHE算法需要的2个参数:Server Params、Client Params, 客户端、服务器都可以使用ECDHE算法根据Server Params、Client Params计算出一个新的随机密钥串: Pre-master secret, 然后结合Client Random、Server Random、Pre-master secret生成一个主密钥, 最后利用主密钥衍生出其他密钥:客户端发送用的会话密钥、服务器发送用的会话密钥等(注意: 这里是两个会话密钥: 客户端会话密钥用于客户端发送消息, 以及服务器对该消息进行解密; 服务端会话密钥用于服务器发送消息, 以及客户端对该消息进行解密)

⑦ - Change Cipher Spec

作用:

  • 告知服务器: 之后的通信会采用计算出来的会话密钥进行加密

⑧ - Finished

作用:

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

⑨ - Change Cipher Spec、⑩ - Finished

作用:

  • 到此为止, 客户端服务器都验证加密解密没问题, 握手正式结束, 后面开始传输加密的HTTP请求和响应

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值