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

# 安全层
HTTP传输的内容被中间人窃取、伪造和篡改。传输过程中无安全性。因此在TCP和HTTP之间插入一个安全层. 所有经过安全层的数据都会被加密或者解密
安全层有两个主要的职责:对发起 HTTP 请求的数据进行加密操作和对接收到 HTTP 的内容进行解密操作。
# 对称加密
- 浏览器发送
加密套件列表和client-random随机数 - 服务端从加密套件列表取一个加密套件,并生机
service-random随机数 - 将 client-random 和 service-random 混合起来生成一个密钥 master secret,有了密钥 master secret , 双方就可以进行数据的加密传输了

提示
加密套件是指加密的方法,加密套件列表就是指浏览器能支持多少种加密方法列表
# 缺点
加密套件和随机数是明文的
# 非对称加密
- 浏览器发送
加密套件列表 - 服务端从加密套件列表取一个加密套件,并返回公钥
- 进行通信。公钥加密,私钥解密;私钥加密,公钥解密

# 缺点
- 非对称加密效率太低
- 无法保证服务器发送给浏览器的数据安全。黑客可以截获数据,通过公钥解密,然后篡改信息再返回给客户端。
# 添加数字证书
数字证书有两个作用
- 数字证书向浏览器证明服务器的身份
- 数字证书里面包含了服务器公钥

- 浏览器发送 对称加密套件列表,非对称加密套件列表,client-random随机数
- 服务端返回 对称加密套件,非对称加密套件,service-random随机数,以及 数字证书
- 浏览器 验证 数字证书
- 浏览器保存 公钥,并生成
pre-master随机数, 用公钥对pre-master加密,并发送给服务端 - 服务端用私钥解密 pre-master
- 浏览器和服务端 用 client-random + service-random + pre-master 生成对称密钥 master-secret
- 进行通信。用对称密钥进行加解密
提示
重要的就是这个pre-master随机数, 黑客获取不到, 所以才保证了加密的可靠性!!!
# 如何申请数字证书?(了解即可)

- 服务端站点人员 填写表单(包含:服务端站点公钥、站点资料、公司资料等)
- CA机构审核表单
- 对表单明文资料 Hash 计算,得出 信息摘要
- CA私钥 加密 信息摘要,得出 数字签名
- 返回包含 公钥、基本信息、数字签名的 数字证书
# 浏览器如何验证数字证书?
- 验证证书的有效期。证书里面就含有证书的有效期, 浏览器只需要判断当前时间是否在证书的有效期范围内即可.
- 验证数字证书 是否被吊销。了解即可
- 验证数字证书 是否是CA机构颁发的。
- 浏览器利用证书原始信息 Hash 计算,得出信息摘要
- 用CA的公钥解密 数字证书中的数字签名,解密出来的也是信息摘要
- 比较两个信息摘要是否相等

# 如何保证浏览端接收到的公钥是来自服务端?
数字证书由:服务器公钥、服务器信息、数字签名服务器把数字证书传输给浏览器,浏览器从数字证书拿到服务器的公钥,从中获取服务器的公钥
# 浏览器是怎么获取到 CA 公钥的?
你部署 HTTP 服务器的时候,除了部署当前的数字证书之外,还需要部署 CA 机构的数字证书 极客时间服务器就有了两个数字证书
- 给极客时间域名的数字证书
- 给极客时间签名的 CA 机构的数字证书
在建立 HTTPS 链接时,服务器会将这两个证书一同发送给浏览器,于是浏览器就可以获取到 CA 的公钥了
# 面试
https的加密原理:对称加密TLS握手后的消息传输;非对称加密生成对称加密的密钥以及数字证书的相关处理 (这种问法不大好,哪有啥加密原理?)
SSL握手过程:见上面 添加数字证书
编辑 (opens new window)
上次更新: 2025/07/20, 08:30:18