HTTPS 加密传输原理

在面试后端、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 采用对称加密与非对称加密结合 的方式:服务器通过下发数字证书 证明身份,客户端验证证书后获取合法公钥 ;使用公钥加密对称密钥 完成安全交换,后续通信全程使用对称密钥加密数据;既保证了密钥传输的安全性,又保证了数据传输的效率,实现防窃听、防篡改、防伪造。


七、高频面试题

  1. HTTPS 用的是对称加密还是非对称加密?→ 混合加密。非对称交换密钥,对称加密数据。

  2. 公钥和私钥在 HTTPS 里的作用?→ 公钥加密对称密钥,私钥解密对称密钥。

  3. 数字证书的作用?→ 证明公钥真实有效,防止中间人攻击。

  4. 为什么不直接用非对称加密传所有数据?→ 速度太慢,对称加密效率更高。

相关推荐
captain3768 小时前
网络原理(9)-数据链路层
java·网络协议·java-ee
yi碗汤园14 小时前
MQTT消息队列遥测传输协议
网络·网络协议·unity
花间相见16 小时前
【后端开发|网络编程】—— 五种实时通信方案全解析:短轮询、长轮询、SSE、MQTT、WebSocket
后端·网络协议
其实防守也摸鱼19 小时前
DeepSeek Harness 开源贡献手记:从入门到合入主线
服务器·数据库·windows·https·ssl
Lsetea20 小时前
OpenSSL快速生成域名证书:含SAN的自签命令、验证与排错
nginx·https·ssl证书·openssl·自签证书
AKA__Zas21 小时前
跨网段主机的文件传输过程
java·网络·网络协议·学习方法
2501_9160088921 小时前
SSE 和 gRPC 流式接口如何抓包,调试 SSE 与 gRPC 流式接口
网络协议·计算机网络·网络安全·ios·adb·https·udp
其实防守也摸鱼1 天前
堆叠注入(Stacked Injection)详解
服务器·数据库·windows·https·ssl
鱼月半1 天前
两台电脑直连网络不通怎么办?
linux·网络协议
布莱克6052 天前
HTTP 状态码详解:从分类到实战
计算机网络·http·状态码