由于HTTPS建立过程经常忘记,固记录

HTTPS建立流程

  1. 客户端发起SSL连接
  2. 服务端发送证书(证书中包含了服务端公钥)
  3. 客户端根据已有证书判断是否是可信任的(客户端决定是否继续)
  4. 服务端要求客户端发送证书
  5. 验证通过,建立连接
  6. 客户端发送协商请求(询问服务端使用哪种加密算法)
  7. 服务端确定加密算法,发送到客户端
  8. 客户端生成随机字符串,通过协商好的加密算法使用服务端公钥加密发送到服务端
  9. 服务端使用私钥解密得到随机字符串
  10. 随后的数据传输使用得到的随机进行对称加密

1-5步是建立连接的过程

6-9步使用非对称加密传送密钥

10使用对称加密传输数据

非对称加密保证了安全性,对称加密保证了快速性

证书

连接建立初期需要用到证书,证书是一个用于双方确认身份的第三方信任机构。假设没有证书这个概念,那么当服务端向客户端发送公钥的时候,中间人对该请求截取没有发送到客户端,反而使用自己的公钥发送到客户端,客户端使用中间人发布的公钥进行加密,随后发送到中间人,中间人使用私钥解密即可拿到对称密钥。所以单纯使用非对称加密仍然是不安全的,引入证书的概念,证书保证了客户端或者服务端收到的一定是服务端或者客户端发送的请求。

最新文章

  1. spring笔记--使用springAPI以及自定义类 实现AOP的一个例子
  2. 同上! 下拉复选框 点击当前的checkbox 选中后面li 添加到指定区域
  3. web 页面上纯js实现按钮倒计数功能
  4. [Linux] VirtualBox - 主机与虚拟机互通 - CentOS
  5. python为什么会有@classmethod?
  6. js获取上一个月、下一个月
  7. (转载)mysql中百万级数据插入速度测试
  8. 【基础练习】【vector】codevs3393 序列倒置
  9. Python 标识符
  10. linux tar 压缩解压命令
  11. Windows 7下阻止系统关机
  12. SoapUI 学习总结-01 环境配置
  13. 一、大体认识jspxcms
  14. K-means之亚洲杯
  15. 屏蔽F12审查元素,禁止使用右键菜单
  16. Tips and Tricks for Debugging in chrome
  17. Literal 字面值 字面量 的理解
  18. LRN和Batch Norm
  19. Shellinabox on centos6.9
  20. 如何将24位RGB颜色转换16位RGB颜色

热门文章

  1. @RequestMapping 参数详解
  2. HIVE常用正则函数(like、rlike、regexp、regexp_replace、regexp_extract)
  3. js、jQuery、ajax面试题
  4. redis读写分离及可用性设计
  5. 蒲公英 · JELLY技术周刊 Vol.18 关于 React 那些设计
  6. Bootstrap4-思维导图-知识点总结
  7. JavaScript学习系列博客_6_JavaScript中的算数运算符
  8. Python 控制台输出时刷新当前行内容而不是输出新行
  9. ACM study day3
  10. 架构设计 | 基于电商交易流程,图解TCC事务分段提交