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. 握手时客户端怎么验证证书?

  1. 服务器把证书发给客户端
  2. 客户端用内置的 CA 根证书验证签名是否合法
  3. 检查证书是否过期、域名是否匹配
  4. 验证通过,拿到服务器公钥,用于后续密钥交换

验证失败就断连接,浏览器弹"不安全"警告。

详细流程见:网易面试题:说一下HTTPS 握手过程中,客户端如何验证证书的合法性?

6. 一个容易误解的点

平时用浏览器 F 12 调试,还是能看到接口明文数据的。HTTPS 解决的是传输过程的加密,Server 和 Client 两端的数据加密得业务自己实现。