最后一次,理解https协议

why?

首先要明确的是https是为了解决什么问题
http请求的所有数据都是明文传输,在网络中无异于裸奔,会出现以下几个问题

  1. 数据窃听
  2. 假装真实客户端向恶意攻击服务端
  3. 假装服务端返回假数据
    https在应用层和传输层中间增加了SSL层,SSL可以理解为CA证书的作用(防止中间人篡改)
    然后使用TLS协议通信,生成对称密匙后采用对称加密,(防止中间人窃取)保证了数据的安全性
Jesus

how?

流程详解

  1. TCP链接建立之后
  2. 客户端向服务端443端口发起请求,携带random1和加密方法列表,TLS第一步
  3. 服务端返回CA证书携带服务端公匙和random2
  4. 客户端拿到CA证书和公匙,和本地CA证书对比校验证书有效性(这里防止中间人篡改随机数)
  5. 验证有效后,客户端生成random3,这里做了两件事,第一自己使用random1,random2,random3生成对称密匙sercet,第二使用服务端给出的公匙加密random3,返回给服务端(非对称加密防止中间人窃取)
  6. 服务端拿到加密后的random3,使用私匙解密,截止目前为止,客户端和服务端都知道random1,random2,random3,服务端也生成对称密匙sercet,得到双方都知道的对称密匙
  7. 最后,双方使用对称密匙加密数据进行通信

总结:
利用CA证书,加密先使用非对称加解密,再使用对称密匙加解密,解决了http带来的窃听和请求伪造的问题