个人理解的 Https 通信流程
https 简单理解是 http + ssl 安全协议。
http 协议的问题是,数据在传递的过程中,会经过很多路由,网关等,可能会被恶意的路由器进行数据拦截,篡改等。
https 的通信流程:1.首先确定服务器是经过安全机构认证的,是可信任的。2.通信过程是经过加密的。
1.a. 首先公司向认证机构,申请证书,认证机构根据公司的信息等,生成 子证书,然后把 (子证书, (子证书通过HASH算法,进行安全哈希,生成消息摘要,用私钥加密生成的)数字签名, 公钥,私钥)给公司。
1.b. 客户端向服务器发送请求。服务器把 (子证书, 数字签名,公钥)发给客户端。1>客户端首先验证 子证书 的安全性, 流程:客户端用 公钥,对数字签名进行解密。同时,对子证书进行安全HASH生成消息摘要,对比两个结果,如果一致,说明子证书是未经过篡改的。2>客户端验证子证书的有效性,客户端拿子证书去 自己电脑上的CA认证列表中进行验证,如果是未过期的,有效的,说明该服务器是 通过认证的,可信任的, 否则的话,会waring不信任,如果是自制的证书会弹出 需要安全认证等弹窗。
2.通过认证,确认服务器可信任后,客户端会 生成一个 用于接下来进行数据传输加密的 密钥(接下来是 非对称加密)。客户端 拿公钥 对这个进行加密,返回服务器,服务器用私钥进行解密,拿到密钥。---》开始通信: 服务器用 密钥 对数据进行加密 传给客户端,客户端 接收到数据之后,用密钥解密。完成通信。