Please enable Javascript to view the contents

Https流程说明

 ·  ☕ 3 分钟

重要

最重要的事:

1.简介

  1. 单向TLS加密
    流程:
    1. 浏览器 –(request.明文)–> 服务器
    1. 服务器 –(response.明文)–> 浏览器
    1. 服务器 –(公钥.server)–> 浏览器
    1. 浏览器 –(request.密文-公钥加密)–> 服务器

缺点:

  • 服务器发出的请求仍然是明文,即使用私钥加密,公钥是公开的,也相当于是明文
  1. 双向TLS加密
    流程:
    1. 浏览器 –(request.明文)»> 服务器
    1. 浏览器 «(response.明文)– 服务器
    1. 浏览器 «(公钥.server)—- 服务器
    1. 浏览器 –(公钥.client)»» 服务器
    1. 浏览器 –(request.密文-公钥.server加密)»> 服务器
    1. 浏览器 «(request.密文-公钥.client加密)— 服务器

缺点:

  • 非对称机密给服务端和客户端性能带来巨大影响(加解密费时,费资源)
  1. 对称加密+非对称加密结合

随机数1= client random
随机数2= server random
随机数3= premaster secret

流程:

    1. [ ]浏览器[随机数1 ] –(随机数1.明文)»»»»»»»»»> [ ]服务器[私+公钥.server]
    1. [ ]浏览器[随机数1 ] «(随机数2.明文)——————- [随机数1+2 ]服务器[私+公钥.server]
    1. [ ]浏览器[随机数1+2 ] «(公钥.server)——————- [随机数1+2 ]服务器[私钥.server]
    1. [公钥.server]浏览器[随机数1+2+3] –(随机数3.密文-公钥.server加密)»» [随机数1+2 ]服务器[私钥.server]
    1. [公钥.server]浏览器[随机数1+2+3] –(finish.密文-随机数计算秘钥)»»» [随机数1+2+3]服务器[私钥.server]
    1. [公钥.server]浏览器[随机数1+2+3] «(finish.密文-随机数计算秘钥)—— [随机数1+2+3]服务器[私钥.server]
    1. [公钥.server]浏览器[随机数1+2+3] –(request.密文-随机数计算秘钥)»»> [随机数1+2+3]服务器[私钥.server]
    1. [公钥.server]浏览器[随机数1+2+3] «(response.密文-随机数计算秘钥)—- [随机数1+2+3]服务器[私钥.server]

缺点:

  • 中间人攻击
  1. 数字证书
  2. 服务器上传公钥+名字
  3. ca用这些信息计算hash,办法证书给服务器
  4. 服务器将证书发给浏览器验证

剩余证书签名、验证过程待完善

Reference

为了一个HTTPS,浏览器操碎了心…

分享

Hex
作者
Hex
CloudNative Developer

目录