## 加密算法
1. 对称加密: DES,AES,3DES;
2. 非对称加密 : RSA,DSA,ECC;
# 对称加密算法
加密方和解密方使用同一把秘钥,但是秘钥有泄露的风险;
![](https://img.kancloud.cn/33/be/33bed1a20ba400d1a9c3466518ed1a7a_1360x512.png)
## 优势
1. 解密效率高;
## 劣势
1. 秘钥无法实现安全传输;
2. 秘钥的数目难以管理;
3. 无法提供信息完整性校验;
# 非对称加密算法
![](https://img.kancloud.cn/b6/16/b616b7be2f270f504091646945916b22_1344x550.png)
## 优势
1. 服务器仅维持一个私钥即可;
## 劣势
1. 公钥是公开的;
2. 非对称加密算法加解密过程中会耗费一定时间;
3. 公钥并不包含服务器信息,存在中间人攻击的可能性;
# HTTPS加密原理
https混合使用对称加密和非对称加密;
1. 连接建立阶段使用非对称加密算法;--->服务器给客户端公钥,客户端拿着公钥加密伪随机生成的**会话秘钥**,并传递给服务端,服务端解密,拿到**会话秘钥**;
2. 内容传输阶段使用对称加密算法;--->使用**会话秘钥**进行内容的传输;
## HTTPS五个角色
1. 服务器;
2. 客户端;
3. 公钥;
4. 私钥;
5. 会话秘钥;
![](https://img.kancloud.cn/a0/9a/a09a76c5f6bd5a3c841ea1a87459138e_1834x1080.png)
1. Client发起一个HTTPS(https:/demo.linianhui.dev)的请求,根据RFC2818的规定,Client知道需要连接Server的443(默认)端口。
2. Server把事先配置好的公钥证书(public key certificate)返回给客户端。
3. Client验证公钥证书:比如是否在有效期内,证书的用途是不是匹配Client请求的站点,是不是在CRL吊销列表里面,它的上一级证书是否有效,这是一个递归的过程,直到验证到根证书(操作系统内置的Root证书或者Client内置的Root证书)。如果验证通过则继续,不通过则显示警告信息。
Client使用伪随机数生成器生成加密所使用的会话密钥,然后用证书的公钥加密这个会话密钥,发给Server。
4. Server使用自己的私钥(private key)解密这个消息,得到会话密钥。至此,Client和Server双方都持有了相同的会话密钥。
Server使用会话密钥加密“明文内容A”,发送给Client。
5. Client使用会话密钥解密响应的密文,得到“明文内容A”。
Client再次发起HTTPS的请求,使用会话密钥加密请求的“明文内容B”,然后Server使用会话密钥解密密文,得到“明文内容B”。
## 总结
简单总结下,HTTPS是使用了证书的一个混合密码系统,其中证书的作用在于传递会话密钥,以及验证网站的真实性;而HTTPS真正的加密操作是由对称密码这个工具负责的(有兴趣的可以找找每个步骤中都用到了密码工具箱中的那些工具)。
## 自己总结
1. 非对称加密会生成一对公钥和私钥,必须要使用特定的私钥才能解开同一对的公钥;
2. 服务器本身有一个公钥和一个私钥;
3. 当客户端去访问的时候会给这个客户端一个公钥;
4. 客户端拿着这个公钥去加密随机数生成器生成加密所使用的**会话密钥**,并发送给服务端;
5. 服务端使用私钥去解密这个加密后的秘钥,这样就得到了**会话秘钥**;
6. 双方使用相同的**会话秘钥**进行连接;
7. HTTPS前半段是非对称加密,而后半段是对称加密;
## 问题
为什么黑客无法解密呢? 因为黑客没有私钥,所以黑客不能解密加密后的**会话秘钥**拿不到**会话秘钥**,既然拿不到**会话秘钥**,就无法解密加密后的内容.这样就安全了;
- NginX简述
- 什么是中间件
- NginX概述
- 选择NginX的理由
- NginX环境安装
- 四项确认
- NginX安装
- 安装
- 安装目录详解
- 编译参数详解
- Nginx主目录
- 基于NginX的中间件架构
- Nginx日志类型
- Nginx变量
- 常见NginX中间架构
- 静态资源web服务
- 概述
- 静态资源服务场景-CDN
- 浏览器缓存原理
- 跨站访问
- 防盗链
- 代理服务
- 概述
- 配置语法
- 其他配置语法
- 负载均衡调度器SLB
- 概述
- 配置
- 动态缓存
- ====分割线====
- Nginx初体验
- nginx简介
- 请求全流程
- nginx核心优势
- 安装第一个rpm包nginx
- Nginx进程结构与热部署
- 进程结构
- 信号量管理nginx
- 配置文件重载原理真相
- nginx热部署
- nginx模块化管理机制
- nginx编译安装的配置参数
- nginx配置文件结构
- 虚拟主机的分类
- Nginx核心指令基础应用
- main段核心参数用法
- events段核心参数用法
- HTTP段核心参数用法
- server_name
- server_name指令用法优先级
- root和alias的区别
- location的基础用法
- location指令中匹配规则的优先级
- 深入理解location中URL结尾的反斜线
- stub_status模块用法
- Nginx应用进阶
- connection和request
- 对connection做限制的limit_conn模块
- 对request处理速率做限制的limit_req模块
- 限制特定IP或网段访问的access模块
- 限制特定用户访问的auth_basic模块
- 基于HTTP响应状态码做权限控制的auth_request模块
- rewrite模块
- return指令
- rewrite指令
- return和rewrite指令执行顺序
- if指令
- autoindex模块用法
- Nginx的变量
- 变量分类
- TCP连接相关变量
- 发送HTTP请求变量
- 处理HTTP请求变量
- 反向代理
- 基础原理
- 动静分离
- nginx作为反向代理支持的协议
- 用于定义上游服务的upstream模块
- upstream模块指令用法详解
- 配置一个可用的上游应用服务器
- proxy_pass常见误区
- 代理场景下nginx接受用户请求包体的处理方式
- 代理场景下Nginx更改发往上游的用户请求
- 代理场景下Nginx与上游服务建立连接细节
- 基于fastcgi的反向代理
- 负载均衡
- 负载均衡基础
- 实现nginx对上游服务负载均衡
- 负载均衡hash算法
- 负载均衡ip_hash算法
- 负载均衡最少连接数算法
- 针对上游服务器返回异常时的容错机制
- Nginx缓存
- 缓存基础
- 缓存相关指令
- 缓存用法配置示例
- 配置nginx不缓存上游服务特定内容
- 缓存失效降低上游压力机制1-合并源请求
- 缓存失效降低上游压力机制2-启用陈旧缓存
- 第三方清除模块ngx_cache_purge介绍
- ngx_cache_purge用法配置示例
- Nginx和HTTPS
- https原理基础
- https如何解决信息被窃听的问题
- https如何解决报文被篡改以及身份伪装问题
- 配置私有CA服务器
- 组织机构向CA申请证书及CA签发证书
- 深入Nginx架构
- Nginx性能优化