重要
最重要的事:
1.简介
- 单向TLS加密
流程:
- 浏览器 –(request.明文)–> 服务器
- 服务器 –(response.明文)–> 浏览器
- 服务器 –(公钥.server)–> 浏览器
- 浏览器 –(request.密文-公钥加密)–> 服务器
缺点:
- 服务器发出的请求仍然是明文,即使用私钥加密,公钥是公开的,也相当于是明文
- 双向TLS加密
流程:
- 浏览器 –(request.明文)»> 服务器
- 浏览器 «(response.明文)– 服务器
- 浏览器 «(公钥.server)—- 服务器
- 浏览器 –(公钥.client)»» 服务器
- 浏览器 –(request.密文-公钥.server加密)»> 服务器
- 浏览器 «(request.密文-公钥.client加密)— 服务器
缺点:
- 非对称机密给服务端和客户端性能带来巨大影响(加解密费时,费资源)
- 对称加密+非对称加密结合
随机数1= client random
随机数2= server random
随机数3= premaster secret
流程:
- [ ]浏览器[随机数1 ] –(随机数1.明文)»»»»»»»»»> [ ]服务器[私+公钥.server]
- [ ]浏览器[随机数1 ] «(随机数2.明文)——————- [随机数1+2 ]服务器[私+公钥.server]
- [ ]浏览器[随机数1+2 ] «(公钥.server)——————- [随机数1+2 ]服务器[私钥.server]
- [公钥.server]浏览器[随机数1+2+3] –(随机数3.密文-公钥.server加密)»» [随机数1+2 ]服务器[私钥.server]
- [公钥.server]浏览器[随机数1+2+3] –(finish.密文-随机数计算秘钥)»»» [随机数1+2+3]服务器[私钥.server]
- [公钥.server]浏览器[随机数1+2+3] «(finish.密文-随机数计算秘钥)—— [随机数1+2+3]服务器[私钥.server]
- [公钥.server]浏览器[随机数1+2+3] –(request.密文-随机数计算秘钥)»»> [随机数1+2+3]服务器[私钥.server]
- [公钥.server]浏览器[随机数1+2+3] «(response.密文-随机数计算秘钥)—- [随机数1+2+3]服务器[私钥.server]
缺点:
- 中间人攻击
- 数字证书
- 服务器上传公钥+名字
- ca用这些信息计算hash,办法证书给服务器
- 服务器将证书发给浏览器验证
剩余证书签名、验证过程待完善