- client Hello,客户端(通常是浏览器)先向服务器发出加密通信的请求
(1) 支持的协议版本,比如TLS 1.0版。
(2) 一个客户端生成的随机数 random1,稍后用于生成"对话密钥"。
(3) 支持的加密方法,比如RSA公钥加密。
(4) 支持的压缩方法。 - 服务器收到请求,然后响应 (server Hello)
(1) 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
(2) 一个服务器生成的随机数random2,稍后用于生成"对话密钥"。
(3) 确认使用的加密方法,比如RSA公钥加密。
(4) 服务器证书。 - 客户端收到证书之后会首先会进行验证
(1)浏览器就可以使用CA机构的公钥对服务器的证书进行验签
(2)验证通过之后,客户端会生成一个随机数pre-master secret,然后使用证书中的公钥进行加密,然后传递给服务器端 - 服务器收到使用公钥加密的内容,在服务端使用私钥解密后得到pre-master secret,然后根据random1,random2,pre-master secret生成sessionKey 和MAC算法秘钥,作为后面交互的对称秘钥。客户端也会用同样的方法生成sessionKey 和MAC算法秘钥
-
然后再后续的交互中就使用session Key和MAC算法的秘钥对传输的内容进行加密和解密。
https
https
网友评论