亮神知识库 亮神知识库
首页
  • 手写代码

    • 手写代码系列
  • 基础知识

    • 基础
    • JS底层
    • CSS
  • 原理
  • 浏览器
  • HTTP
  • 网络安全
  • babel
  • webpack基础
  • webpack进阶
  • Vite
  • TypeScript
  • Vue2
  • Vue3
  • Node基础

    • glob
    • 模块化机制
    • 事件循环
    • KOA2框架原理
    • Node子进程
    • cluster原理(了解)
  • 教育行业2021

    • B端
    • C端
    • 工具
  • 游戏行业2025
  • 刷题
  • 杂(待整理)
  • 学习
  • 面试
  • 实用技巧
  • 心情杂货
  • 年度总结
  • 友情链接
关于
  • 分类
  • 标签
  • 归档
  • 收藏
GitHub (opens new window)

亮神

前程明亮,未来可期
首页
  • 手写代码

    • 手写代码系列
  • 基础知识

    • 基础
    • JS底层
    • CSS
  • 原理
  • 浏览器
  • HTTP
  • 网络安全
  • babel
  • webpack基础
  • webpack进阶
  • Vite
  • TypeScript
  • Vue2
  • Vue3
  • Node基础

    • glob
    • 模块化机制
    • 事件循环
    • KOA2框架原理
    • Node子进程
    • cluster原理(了解)
  • 教育行业2021

    • B端
    • C端
    • 工具
  • 游戏行业2025
  • 刷题
  • 杂(待整理)
  • 学习
  • 面试
  • 实用技巧
  • 心情杂货
  • 年度总结
  • 友情链接
关于
  • 分类
  • 标签
  • 归档
  • 收藏
GitHub (opens new window)
  • 浏览器工作原理与实践

  • 浏览器

  • HTTP

    • 一个数据包在网络中的心路历程
    • http
    • https
      • 概念
      • 安全层
      • 对称加密
      • 缺点
      • 非对称加密
      • 缺点
      • 添加数字证书
      • 如何申请数字证书?(了解即可)
      • 浏览器如何验证数字证书?
      • 如何保证浏览端接收到的公钥是来自服务端?
      • 浏览器是怎么获取到 CA 公钥的?
      • 面试
  • 网络安全

  • 浏览器
  • HTTP
0zcl
2021-06-18
目录

https

# 概念

  • 对称加密:指加密和解密都使用的是相同的密钥
  • 非对称加密:非对称加密算法有 A、B 两把密钥,如果你用 A 密钥来加密,那么只能使用 B 密钥来解密; 反过来,如果你要 B 密钥来加密,那么只能用 A 密钥来解密。公钥是公开的,私钥是只有服务器才知道的。
  • 数字证书:服务端站点的公钥 + 服务端站点的基础信息 + CA私钥加密信息摘要 得到的数字签名,三者组成数字证书

数字证书

# 安全层

HTTP传输的内容被中间人窃取、伪造和篡改。传输过程中无安全性。因此在TCP和HTTP之间插入一个安全层. 所有经过安全层的数据都会被加密或者解密

安全层有两个主要的职责:对发起 HTTP 请求的数据进行加密操作和对接收到 HTTP 的内容进行解密操作。

# 对称加密

  1. 浏览器发送 加密套件列表和client-random随机数
  2. 服务端从加密套件列表取一个加密套件,并生机service-random随机数
  3. 将 client-random 和 service-random 混合起来生成一个密钥 master secret,有了密钥 master secret , 双方就可以进行数据的加密传输了

secret

提示

加密套件是指加密的方法,加密套件列表就是指浏览器能支持多少种加密方法列表

# 缺点

加密套件和随机数是明文的

# 非对称加密

  1. 浏览器发送 加密套件列表
  2. 服务端从加密套件列表取一个加密套件,并返回公钥
  3. 进行通信。公钥加密,私钥解密;私钥加密,公钥解密

secret

# 缺点

  1. 非对称加密效率太低
  2. 无法保证服务器发送给浏览器的数据安全。黑客可以截获数据,通过公钥解密,然后篡改信息再返回给客户端。

# 添加数字证书

数字证书有两个作用

  1. 数字证书向浏览器证明服务器的身份
  2. 数字证书里面包含了服务器公钥

secret

  1. 浏览器发送 对称加密套件列表,非对称加密套件列表,client-random随机数
  2. 服务端返回 对称加密套件,非对称加密套件,service-random随机数,以及 数字证书
  3. 浏览器 验证 数字证书
  4. 浏览器保存 公钥,并生成 pre-master随机数, 用公钥对pre-master加密,并发送给服务端
  5. 服务端用私钥解密 pre-master
  6. 浏览器和服务端 用 client-random + service-random + pre-master 生成对称密钥 master-secret
  7. 进行通信。用对称密钥进行加解密

提示

重要的就是这个pre-master随机数, 黑客获取不到, 所以才保证了加密的可靠性!!!

# 如何申请数字证书?(了解即可)

数字证书

  1. 服务端站点人员 填写表单(包含:服务端站点公钥、站点资料、公司资料等)
  2. CA机构审核表单
  3. 对表单明文资料 Hash 计算,得出 信息摘要
  4. CA私钥 加密 信息摘要,得出 数字签名
  5. 返回包含 公钥、基本信息、数字签名的 数字证书

# 浏览器如何验证数字证书?

  1. 验证证书的有效期。证书里面就含有证书的有效期, 浏览器只需要判断当前时间是否在证书的有效期范围内即可.
  1. 验证数字证书 是否被吊销。了解即可
  2. 验证数字证书 是否是CA机构颁发的。
    • 浏览器利用证书原始信息 Hash 计算,得出信息摘要
    • 用CA的公钥解密 数字证书中的数字签名,解密出来的也是信息摘要
    • 比较两个信息摘要是否相等 ca

# 如何保证浏览端接收到的公钥是来自服务端?

数字证书由:服务器公钥、服务器信息、数字签名服务器把数字证书传输给浏览器,浏览器从数字证书拿到服务器的公钥,从中获取服务器的公钥

# 浏览器是怎么获取到 CA 公钥的?

你部署 HTTP 服务器的时候,除了部署当前的数字证书之外,还需要部署 CA 机构的数字证书 极客时间服务器就有了两个数字证书

  1. 给极客时间域名的数字证书
  2. 给极客时间签名的 CA 机构的数字证书

在建立 HTTPS 链接时,服务器会将这两个证书一同发送给浏览器,于是浏览器就可以获取到 CA 的公钥了

# 面试

https的加密原理:对称加密TLS握手后的消息传输;非对称加密生成对称加密的密钥以及数字证书的相关处理 (这种问法不大好,哪有啥加密原理?)

SSL握手过程:见上面 添加数字证书

参考: https (opens new window) 极客时间 (opens new window)

编辑 (opens new window)
上次更新: 2025/07/20, 08:30:18
http
摘要

← http 摘要→

最近更新
01
2024年
07-20
02
2023年
07-20
03
2022年
07-20
更多文章>
Theme by Vdoing | Copyright © 2025-2025 亮神 | MIT License | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式