Https流程

Https流程_第1张图片
图片源自网络

①客户端发送Client Hello

SSL/TSL version:1.2(协议版本)

Cipher Suites:(支持的加解密算法族)

Random:(客户端生成随机数random_client)

Session ID:(如果之前已经建立过https链接并且服务器返回又SID,则发送时会有值)

Extensions:(扩展数据 例如:Server Name : www.google.com etc)

②服务端相应Server Hello

Random:(服务端生产的随机数random_server)

Session ID:(服务端对SID又三种情况)

(1)恢复session ID:我们之前在client hello里面已经提到,如果client hello里面的session ID在服务端有缓存,服务端会尝试恢复这个session;

(2)新session ID:这里又分两种情况,第一种是client hello里面的session ID是空值,此时服务端会给客户端一个新的session ID,第二种是client hello里面的session ID此服务器并没有找到对应的缓存,此时也会回一个新的session ID给客户端

(3)NULL:服务端不希望此session被恢复,因此session ID为空。

Cipher Suite:(在client hello里面,客户端给出了多种加密族 Cipher,而在客户端所提供的加密族中,服务端挑选了“TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256”)

(a)TLS为协议,RSA为密钥交换的算法;

(b)AES_256_CBC是对称加密算法(其中256是密钥长度,CBC是分组方式);

(c)SHA是哈希的算法。这就意味着服务端会使用ECDHE-RSA算法进行密钥交换,通过AES_128_GCM对称加密算法来加密数据,利用SHA256哈希算法来确保数据完整性。

Server Certificate:(服务端证书)

Server Key Exchange:(Server返回给Client用于生成key(对称加密密匙)的信息)

Certificate Request:(要求Client发送证书)

ServerHelloDone:(表示Server已经结束Hello过程)

③客户端验证证书真伪性如需则发送客户端证书

Client Certificate:(客户端证书)

Client Key Exchange:(client提交给Server自己用于生成key(对称加密密匙)的信息)

④对称加密密钥交换

(1)首先,客户端利用CA数字证书实现身份认证,利用非对称加密协商对称密钥。

(2)客户端会向服务器传输一个“pubkey_client”随机数,服务器收到之后,利用特定算法生成另外一个“pubkey_server”随机数,客户端利用这两个“pubkey”随机数生成一个 pre-master 随机数。

(3)客户端利用自己在 client hello 里面传输的随机数 random_C,以及收到的 server hello 里面的随机数 random_S,外加 pre-master 随机数,利用对称密钥生成算法生成 对称密钥 enc_key:enc_key=Fuc(random_C, random_S, Pre-Master) 

⑤客户端通知服务端发送加密数据和结束握手

ChangeCIpherSpec:(客户端通知服务端发送加密数据)

Client Finished:(结束握手)

⑥服务端通知服务端发送加密数据和结束握手

ChangeCIpherSpec:( 客户端通知服务端发送加密数据 )

Client Finished:( 结束握手 )

⑦利用对称密钥加解密传输数据

你可能感兴趣的:(Https流程)