>[danger]什么是https协议?
****
![](https://box.kancloud.cn/5fd3fb079390683d909300654ae24a17_636x256.png)
1. 其实就是在HTTP上加入一层SSL/TSL加密, 利用SSL/TSL加密建立一条加密的通信渠道进行数据传输
2. HTTP + 加密 + 认证 + 完整性保护 = HTTPS
3. HTTP先和SSL/TSL通信, 再与TCP通信
4. 那么加密SSL是如何做的呢, 我们需要先了解共享加密(对称加密)和非对称加密
>[danger]共享秘钥? (对称加密)
1. 加密和解密都使用同一秘钥
2. 但是很危险如何让攻击者拿到秘钥就可以解密我们传输的数据了
![](https://box.kancloud.cn/5766331e031fdaadb10e6a646f2a5f38_350x309.png)
>[danger]公钥,私钥加密? (非对称加密)
1. 可以使用公钥加密信息, 再用私钥解密
2. 也可以用私钥加密信息, 再用公钥解密
****
![](https://box.kancloud.cn/601ae551ad474fedf3200307db17ccb8_680x493.png)
(1) 客户端 <- (获取公钥) <- 服务端
(2) 客户端 -> (利用公钥, 加密信息, 发给服务器端) -> 服务端
(3) 客户端 -> (服务端利用私钥解密, 得到信息) -> 服务端
(这里注意, 私钥是保存在服务器上, 除非你能黑入我的服务器, 获取私钥)
****
>[danger]HTTPS的混合加密方式
****
1.需要申请一对证书, 证书就是公钥和私钥
(1) 因为公钥加密, 私钥解密, 或者私钥加密, 公钥解密, 这种方式比较慢,
(2) 最好使用一个共享秘钥, 即可加密也可以解密, 但是直接传输这个共享秘钥很危险.所以混合使用上2种方式
![](https://box.kancloud.cn/bd1774e2a3717447d4514d02e3520503_650x442.png)
2. 流程如下:
(1): 客户端向服务端请求索要公钥, 并验证公钥
(2): 随机产生一个共享秘钥, 公钥加密它发给服务器端, 服务端用私钥解密, 得到共享秘钥
(3): 以后这对前后端就用这个共享秘钥加密和解密信息
3. 注意: 客户端和服务端都要配置身份证书, 防止中间人得到公钥伪装客户端
*****
![](https://box.kancloud.cn/f4610bbfcba60ec3c251d5f69dca5617_853x514.png)
中间人, 无法拥有服务器上的CA私钥, 所以证书无法再次加密骗过服务器的验证
****
扩展:
安全性考虑:
(1): HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用
(2): SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行
成本考虑:
(1): SSL证书需要购买申请,功能越强大的证书费用越高
(2): SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名.
(3): 使用HTTPS协议会使页面的加载时间延长近50%,增加10%到20%的耗电。
(4): HTTPS连接缓存不如HTTP高效,流量成本高。
(5): HTTPS连接服务器端资源占用高很多,支持访客多的网站需要投入更大的成本, 握手阶段比较费时, 影响用户体验, 最好像12306普通页面用HTTP, 用户操作页面使用HTTPS
****
- web前端
- CSS问题
- 布局
- 双飞翼布局_flex方式
- 双飞翼布局_margin方式
- 圣杯布局_flex方式
- 圣杯布局_margin方式
- 子元素居中问题
- 弹性布局
- 概念_
- 标准模式与混杂模式
- 各种FC
- line-height
- vertical-align
- CSS3新特性
- 效果
- div添加箭头
- CSS绘制三角形
- JavaScript
- 兼容
- 事件相关
- 原理
- Ajax原理
- 继承原理
- 原型链继承
- 组合继承
- 寄生组合继承
- 数据绑定
- 1单向数据绑定m到c到v
- 2伪双向数据绑定
- 3双向数据绑定
- socket.io
- 运行时
- this指向
- 0.1+0.2问题
- 对象/数组-深拷贝&浅拷贝
- 事件循环
- typeof
- instanceof
- 概念
- 闭包
- 回调函数
- Promise
- 原生对象
- Attribute和property区别
- 防抖函数
- 节流函数
- 语言类型
- Vue
- Vue优缺点
- 仿Vue源码
- 1数据绑定_Observe
- 2数据绑定_订阅者&观察者定义
- 3数据绑定_Vue类实现
- 4数据绑定_Vue访问data更改
- 5DOM编译_Compile_双大括号模板讲解
- 6DOM编译_v-model讲解
- 7DOM编译_v-on:事件绑定讲解
- 项目总结
- 使用Svg图标
- vueCli环境_真机测试
- vueCli集成环信SDK
- 父子组件双向绑定
- React
- React优缺点
- 我的组件库
- Vue的组件库
- 环信_聊天组件
- 面试题
- HTML_分类
- CSS_分类
- JavaScript_分类
- VueJS_分类
- ReactJS_分类
- AngularJS_分类
- 浏览器端
- 笔试题
- CSS
- 特殊布局
- JavaScript_
- 经典_宏任务_微任务
- 浏览器问题
- CORS
- web服务器
- Apache
- 开启跨域
- Nginx
- 常用命令
- 正向代理
- 反向代理
- 负载均衡
- mac安装Nginx
- 配置80端口
- 算法
- 冒泡排序
- 选择排序
- 合并对象_排序
- 杨辉三角
- 红黑树
- 计算机基础
- 网络相关
- OSI七层模型
- http协议
- http工作原理
- https协议
- GET和POST区别
- hosts文件
- php相关
- session机制
- Linux
- 阿里云服务器
- linux使用Mysql
- 安装mysql
- 导入.sql文件
- 远程连接mysql
- linux使用xampp
- 安装Xampp
- 配置web访问
- 域名绑定服务器
- linux搭建git服务器_apache下
- 代码管理
- 什么是git
- 命令行_使用git
- .gitignore文件讲解
- 软件
- VSCode的安装
- 理财
- 基金
- 摄影