在面试后端、Java 开发、网络安全时,HTTPS 加密过程 几乎是必考题。很多同学能说出 "加密",但一深入到对称加密、非对称加密、数字证书、公钥私钥就开始混乱。
这篇文章用最通俗、最直白、最适合面试的方式,带你彻底搞懂 HTTPS 到底是怎么加密的。
一、HTTPS 是什么?
HTTPS = HTTP + SSL/TLS
- HTTP:明文传输,不安全,数据容易被窃听、篡改、伪造
- HTTPS:在 HTTP 下层加入加密层,保证传输安全
一句话总结:HTTPS 不是新协议,而是给 HTTP 穿了一件 "加密防弹衣"。
二、先搞懂两种加密:对称 & 非对称
HTTPS 之所以安全,是因为它同时使用了两种加密,各司其职。
1. 对称加密
- 加密、解密用同一个密钥
- 优点:速度极快,适合大量数据传输
- 缺点:密钥在网络上传输不安全,一旦被截获就全泄露
2. 非对称加密(公钥 & 私钥)
- 一对钥匙:公钥(公开)、私钥(自己留)
- 规则:
- 公钥加密 → 只能私钥解密
- 私钥加密 → 只能公钥解密(数字签名)
- 优点:极其安全,私钥永不传输
- 缺点:速度慢,不适合大量数据
三、HTTPS 最核心思想:混合加密
面试必背这句话:HTTPS 使用非对称加密,安全交换对称密钥; 之后全程使用对称密钥加密传输数据。
简单理解:
- 非对称加密:只负责 "安全递暗号"
- 对称加密:负责 "真正聊天加密"
四、HTTPS 完整加密流程(面试直接背)
1. 客户端发起 HTTPS 请求
浏览器访问 https://xxx.com,告诉服务器:我支持哪些加密套件。
2. 服务器返回数字证书
服务器下发数字证书,里面包含:
- 服务器的公钥
- 域名、有效期
- CA 机构的数字签名(防伪造)
3. 客户端验证证书
浏览器使用系统内置的 CA 公钥 验证证书签名:
- 验证通过 → 公钥可信
- 验证失败 → 提示 "不安全"
4. 客户端生成随机对称密钥
浏览器生成一个临时对称密钥,这是后续真正加密数据的密钥。
5. 用服务器公钥加密对称密钥
客户端使用服务器公钥加密对称密钥,发送给服务器。
6. 服务器用私钥解密
服务器使用自己的私钥解密,得到对称密钥。
7. 双方使用对称密钥通信
从这一步开始:
- 所有网页、图片、接口数据
- 全部使用对称密钥加密传输
- 速度快、安全性高
五、数字证书到底有什么用?
如果没有证书:黑客可以伪造公钥发给你,你用假公钥加密,黑客直接用私钥解密,这叫中间人攻击。
数字证书 = 网站公钥的身份证
- 由权威机构 CA 颁发
- 证明这个公钥真的属于这个网站
- 浏览器验证 CA 签名,确保不被掉包
六、面试终极总结(背会这一段)
HTTPS 采用对称加密与非对称加密结合 的方式:服务器通过下发数字证书 证明身份,客户端验证证书后获取合法公钥 ;使用公钥加密对称密钥 完成安全交换,后续通信全程使用对称密钥加密数据;既保证了密钥传输的安全性,又保证了数据传输的效率,实现防窃听、防篡改、防伪造。
七、高频面试题
-
HTTPS 用的是对称加密还是非对称加密?→ 混合加密。非对称交换密钥,对称加密数据。
-
公钥和私钥在 HTTPS 里的作用?→ 公钥加密对称密钥,私钥解密对称密钥。
-
数字证书的作用?→ 证明公钥真实有效,防止中间人攻击。
-
为什么不直接用非对称加密传所有数据?→ 速度太慢,对称加密效率更高。