https连接建立过程
1: 客服端向服务端443端都发送建立连接请求,并附带自己支持的加密算法
2:服务端收到请求后,把客户端支持的加密算法和自身支持的加密算法匹配,如果没有相同的就断开,有相同的,就开始建立连接,将证书发送给客户端,证书包括了:证书颁发机构、使用机构、公钥、有效期、签名算法、指纹算法、指纹。
3.1: 验证证书:客户端收到证书后,先验证证书,包括颁发机构是否合法、是否过期、证书包含的网址是否和要访问的网站一致
3.2:生成随机数:验证证书通过后,客户端生成随机数,用服务端发来的公钥加密,
3.3:生成握手信息:客户端用证书中的签名hash算法获取握手信息的hash值,然后用上一步生成的随机数对hash值加密,然后用服务端的公钥加密信息,发送给服务端
4: 服务端收到加密信息后,用自己的私钥解密信息,解密随机数,并用随机数解密握手信息和hash值,和自己发送的握手信息和hash值进行对比,如果验证无误,同样使用随机串加密握手信息,和生成hash值,并发送给客户端
5: 客户端验证服务端发送回来的握手数据和hash值,没问题完成握手,从此客户端和服务端就用那个随机串对称加密往来的数据
图解: