最近几天突然对HTTPS的内部工作流程有点好奇,所以跟同事一起查阅资料探讨了一下,写下这几篇总结加深下印象。
这一篇先讲讲SSL层的握手过程,我们来根据图片一步步讲解,图片如下:
整个握手分为四个阶段:
1. 客户端像服务端发起请求,请求的信息都是明文,信息包括以下几个部分:
a. content type 消息的内容类型,告诉服务器,我要握手了 handshake
b. TSL version 协议版本
c. session id/session ticket,用于会话缓存,减少握手耗时,第一次传空代表是新会
话,不需要去查找恢复之前存在的会话。
d. cipher suites 客户端支持的加密套件列表
e. compression methods(压缩算法列表,用于后续的信息压缩传输)
f. Random 产生一个随机数 Random_C
g. Extensions 附加的其他信息 如SNI
2. 服务端收到客户端的信息后,会以明文形式返回如下信息:
a. content type 消息的内容类型,握手 handshake
b. TSL version 协议版本
c. session id/session ticket,用于会话缓存,服务端生成session id/Session ticket
报文(包括主密钥在内的会话信息,mast