文章目录
一、HTTP 在网络各个层级的传输过程
二、HTTPS 工作流程
1、中间人篡改服务器下发的数字证书
2、中间人冒充服务器端
三、HTTPS 弊端
一、HTTP 在网络各个层级的传输过程
应用层 : 在客户端浏览器 , 即应用层 , 生成 HTTP 请求报文 , 如下 :
GET / HTTP/1.1 Host: rucfd.ruc.edu.cn Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 If-None-Match: "b7f-5b575595fe630-gzip" If-Modified-Since: Wed, 02 Dec 2020 06:28:18 GMT
如果只有 HTTP 请求报文 , 是无法将该报文准确送达 Web 服务器的 , 无法完整网络传输 ;
传输层 : 在传输层 , 添加 TCP 首部信息 ; ( TCP 首部信息 ( HTTP 报文 ) )
网络层 : 在网络层 , 添加 IP 首部信息 ; ( IP 首部信息 ( TCP 首部信息 ( HTTP 报文 ) ) )
数据链路层 : 在数据链路层 , 添加以太网首部信息 ; ( 以太网首部信息 ( IP 首部信息 ( TCP 首部信息 ( HTTP 报文 ) ) ) )
物理层 : 只进行物理传输 , 不改变数据 ;
二、HTTPS 工作流程
HTTPS 工作流程 :
① 客户端发送请求 : 浏览器向服务器发送请求 , 连接到服务器的 443 443443 端口 , 发送 " 随机值 1 11 " 和 客户端支持的加密算法 ;
② 服务器端响应请求 : 服务器端 收到客户端的信息后 , 回送响应信息 , 包括 " 随机值 2 22 " 和 匹配好的客户端的加密算法 ; 客户端支持的加密算法 范围 大于等于 服务器端匹配的加密算法 ;
③ 服务器端发送证书 : 服务器端 给 客户端 发送 数字证书 , 数字证书是由专门的组织机构颁发的 ;
数字证书 也可以自己生成 , 自己生成的证书需要客户端验证通过才能继续访问 ; 会弹出警告界面 ;
受信任的组织颁发的证书不会弹出警告界面 ;
数字证书由公钥和私钥构成 ;
传输的证书是公钥 , 公钥中包含了 : 证书颁发机构 , 过期时间 , 服务器端公钥 , 证书机构签名 , 服务器端域名信息 ;
④ 客户端解析证书 : 客户端 TSL 进行 数字证书解析 ;
验证 公钥有效性 , 颁发机构 , 过期时间 等 , 如果发现异常弹出警告 , 提示证书出现问题 ;
如果验证通过 , 则生成 " 预主密钥 " ;
⑤ 客户端生成会话秘钥 : 客户端证书验证通过后 , 将 " 随机值 1 11 " , " 随机值 2 22 " , " 预主密钥 " 组装为 " 会话秘钥 " , 使用数字证书公钥 , 加密会话秘钥 ;
⑥ 客户端发送会话秘钥 : 客户端向服务器端发送 加密后的 会话秘钥 ;
⑦ 服务器端解密会话秘钥 : 服务器端使用 数字证书 的私钥 , 解密使用 数字证书 公钥 加密后的 会话秘钥 , 得到 " 随机值 1 11 " , " 随机值 2 22 " , " 预主密钥 " , 将 3 33 者组装成 会话秘钥 , 与客户端进行沟通 ;
⑧ 客户端发送测试加密数据 : 客户端通过 " 会话秘钥 " 向服务器端发送加密后的消息 , 验证服务器端是否可以接收客户端加密后的信息 ;
⑨ 服务器端发送测试加密数据 : 服务器端通过 " 会话秘钥 " 加密一条消息发送给客户端 , 如果客户端可以解密该数据 , 说明 SSL 加密连接建立完成 ;
1、中间人篡改服务器下发的数字证书
服务器端向客户端发送公钥时 , 可能被中间人拦截 , 伪装一个公钥 , 发送给客户端 ;
在第 ④ 步 , 客户端要验证服务器端发送的 数字证书 信息 ;
通过 权威机构 认证中心 确保该数字证书 的真实性 ;
客户端本地配置有 权威机构 CA 的公钥 , 对 数字证书 进行解密 , 得到 服务器端的公钥 和 数字签名 , 数字签名经过 CA 公钥解密 , 得到数字证书信息摘要 ;
计算当前数字证书的 信息摘要 , 与收到的 信息摘要 进行对比 , 如果一致 , 说明该 数字证书 没有被篡改 ;
数字证书 是 CA 权威机构认证中心 使用 私钥生成的 , 中间人只有 CA 公钥 , 无法进行修改 ;
通过鉴定 数字证书 就可以判定对方是否是中间者 ;
2、中间人冒充服务器端
到 认证中心 CA 申请数字证书时 , 需要绑定域名信息 , 提供域名管理员邮箱等 , 用户访问 域名1 , 中间人发送一个 域名2 的数字证书 , 肯定通不过验证 ;
三、HTTPS 弊端
HTTPS 的弊端 :
① 只能避免部分攻击 : 无法避免 拒绝服务攻击 , 服务器劫持 等黑客攻击 ;
② 不是绝对安全 : SSL 数字证书不是绝对安全的 , 美国控制 CA 根证书 , 可以实施中间人攻击 ;
③ 费用高 : SSL 证书需要购买申请 , 功能越强 , 费用越贵 ;
④ 资源消耗高 : 与 HTTP 对比 , 使用 HTTPS 缓存低效 , 流量成本高 , 延迟增加 50% , 耗电量增加 20% , 服务器资源占用高 ;
推荐不需要加密访问的页面使用 HTTP , 需要时再使用 HTTPS 协议 ;