https原理
总结
- HTTP 是明文传输,HTTPS 多了一层 TLS 加密
- 单纯非对称加密会被"公钥替换攻击",所以引入了 CA 证书
- 证书由可信 CA 用私钥签名,浏览器用内置根证书验证,伪造证书会被识别
- HTTPS 只保证传输过程加密,端到端业务数据加密得自己搞
1. 为啥需要 HTTPS?
HTTP 是明文传输,敏感数据在网络上裸奔。HTTPS 在 HTTP 上加了一层 TLS,传输的内容就是密文了。
2. 加密怎么做的?
光加密还不够,密钥本身也不能明文传,不然加密没意义。所以用了非对称加密来交换密钥。
但非对称加密有个问题——"公钥替换攻击":中间人可以把服务器的公钥换成自己的,你以为在跟服务器通信,其实在跟中间人通信。

3. 证书怎么解决这个问题?
引入了证书和证书颁发机构(CA)。CA 是受信任的第三方,负责给服务器颁发证书并验证身份。
浏览器和操作系统出厂时就预装了一批可信根证书,只有这些 CA 签发的证书才算合法。

4. 中间人还能伪造证书吗?
不行。证书是 CA 用自己私钥签名的,只有用 CA 的公钥才能验证签名。中间人伪造的证书签名对不上,浏览器一验就知道是假的,会直接报警告断开连接。
所以 HTTPS 的安全性本质上依赖 CA 的信任链——你信任 CA,CA 给服务器背书,你就信任服务器。
5. 握手时客户端怎么验证证书?
- 服务器把证书发给客户端
- 客户端用内置的 CA 根证书验证签名是否合法
- 检查证书是否过期、域名是否匹配
- 验证通过,拿到服务器公钥,用于后续密钥交换
验证失败就断连接,浏览器弹"不安全"警告。
详细流程见:网易面试题:说一下HTTPS 握手过程中,客户端如何验证证书的合法性?
6. 一个容易误解的点
平时用浏览器 F 12 调试,还是能看到接口明文数据的。HTTPS 解决的是传输过程的加密,Server 和 Client 两端的数据加密得业务自己实现。