带你读《2022技术人的百宝黑皮书》——HTTPS的原理浅析与本地开发实践(5)https://developer.aliyun.com/article/1340625?groupCode=taobaotech
HTTPS数据传输步骤分解
- TCP握手 —— 建立链接;
TLS握手或者秘钥协商过程(基于TLS版本的不同或者缓存影响,握手次数有所差异,这里只看TLSv1.2的标准 流程),握手目的:验证身份、交换信息、生成秘钥,为后续的通信做准备,总览图如下:
(mac-https-ssl.ccdoit.com no ico TLS use curl.pcapng)
- TCP挥手 —— 断开链接;
TLS握手过程简析
TCP建立链接和断开链接不是本次关注的重点,这里只对TLS握手协商秘钥的过程做一个简要的分析。 C端代表客户端,S端代表服务端
第一次握手
【C端 -> S端】 —— 告知S端,当前C端支持的协议版本(Version)、加密通信支持套件(Cipher Suites)等信息,并产生了一个随机数(5a882b)。
第二次握手
【S端 ->C端】 —— 告知C端,确定使用TLS协议版本号是1.2、生成的随机数(524401)、产生会话ID、确定加密通信的套件为TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384。
通信套件(Cipher Suite)解析:
- 生成秘钥:密钥协商算法使用ECDHE ;
- 数据传输加密算法:握手后的通信使用 AES 对称算法,密钥长度 256位,分组模式是 GCM;
- 身份验证:签名算法使用RSA;
- 完整性校验:摘要算法使用SHA384;
TLS 的会话缓存机制 —— SessionId(协议标准字段) 和 Session Ticket(协议扩展字段),后续篇幅研究;
带你读《2022技术人的百宝黑皮书》——HTTPS的原理浅析与本地开发实践(7)https://developer.aliyun.com/article/1340623?groupCode=taobaotech