⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 mp.weixin.qq.com/s?__biz=MzU4MDUyMDQyNQ==&mid=2247568861&idx=2&sn=5efbc3bdea3e7d93110b1c78697a0fc6&poc_token=HKy6vmmjwQVVfvwWZ_vVP3M4q3XzwJQL0_cWls_l 「null」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

很多人面试答”HTTPS 比 HTTP 安全”就没了。面试官真正想听的是:安全在哪、怎么实现的、代价多大。

先上结论:HTTPS = HTTP + TLS。TLS 在 TCP 之上加了一层安全协议,用证书认身份、用非对称加密换密钥、用对称加密传数据。

维度 HTTP HTTPS
端口 80 443
传输 明文 TLS 加密
证书 不需要 需要 CA 签发
性能 无加密开销 TLS 1.3 下差距可忽略
SEO 无加成 搜索引擎优先收录

HTTP 裸奔的三宗罪

  1. 窃听:明文传输,咖啡厅 WiFi 抓包就能看到你的账号密码
  2. 篡改:没有完整性校验,运营商可以往网页里插广告,黑客可以改下载包植入木马
  3. 冒充:没有身份验证,你以为访问的是银行,其实是钓鱼网站

HTTPS 怎么治这三个病?

  • 加密治窃听:对称加密(AES)加密所有数据,截获了也是乱码
  • 校验治篡改:消息认证码(HMAC)对数据签名,改了就对不上
  • 证书治冒充:服务器必须持有 CA 颁发的数字证书,浏览器验证后才放行

TLS 握手:怎么安全地商量密钥?

核心矛盾:对称加密快但密钥怎么安全传过去?答案是用非对称加密传密钥,用对称加密传数据。

握手流程(TLS 1.2):

  1. 协商算法:客户端发 ClientHello(支持的加密套件列表 + 随机数 C),服务端选一个回 ServerHello(+ 随机数 S)
  2. 验证证书:服务端发证书,客户端沿 CA 信任链逐级验签
  3. 密钥交换:客户端生成预主密钥(Pre-Master Secret),用服务端公钥加密发过去。只有持有私钥的真服务器能解密
  4. 生成会话密钥:双方用随机数 C + 随机数 S + 预主密钥算出最终的对称密钥(Session Key)
  5. 握手完成:双方发 Finished 消息互相验证,之后全部用对称加密通信

混合加密

现代 HTTPS 用 ECDHE 做密钥交换,每次会话生成临时密钥对,即使服务器私钥将来泄露,过去的会话也无法解密——这就是完美前向保密(PFS)。

证书和 CA 信任链

三级结构:根 CA → 中间 CA → 服务器证书。

  • 根 CA:预装在操作系统/浏览器里(DigiCert、GlobalSign 等),私钥离线保管
  • 中间 CA:根 CA 签发,负责日常签证。这样根 CA 私钥不用频繁使用
  • 服务器证书:网站向 CA 申请,包含域名、公钥、有效期,用 CA 私钥签名

浏览器验证链条:证书是否过期 → 域名是否匹配 → 签名是否有效 → 逐级验到根证书。任何一步失败,连接终止。

性能到底差多少?

短答案:现代 HTTPS 性能开销可以忽略。

  • 握手延迟:TLS 1.2 需要 2 RTT,TLS 1.3 只要 1 RTT,恢复会话甚至 0-RTT
  • 加密开销:现代 CPU 有 AES-NI 指令集,对称加密开销 < 1%
  • 综合性能:HTTPS 强制 HTTP/2,多路复用减少连接数,总体性能可能反超 HTTP

面试高频追问

Q1:HTTPS 一定安全吗?

不一定。HTTPS 保护的是传输层,防不了:客户端被植入恶意根证书(中间人攻击)、DNS 劫持、服务端自身漏洞。还有协议层攻击如 SSL 剥离(降级到 HTTP)。

Q2:TLS 1.2 vs 1.3?

TLS 1.3 砍掉了不安全的算法(RSA 密钥交换、RC4、SHA-1),握手从 2 RTT → 1 RTT,支持 0-RTT 恢复。更安全更快。

Q3:对称加密和非对称加密?

对称加密一把密钥加解密,快,适合传数据;非对称加密公钥加密私钥解密,慢但安全,适合传密钥和签名。HTTPS 混合使用。

Q4:浏览器怎么验证证书?

检查过期 → 域名匹配 → 验签名 → 沿信任链追到根 CA。根 CA 预装在系统里。

文章目录
  1. 1. HTTP 裸奔的三宗罪
  2. 2. HTTPS 怎么治这三个病?
  3. 3. TLS 握手:怎么安全地商量密钥?
  4. 4. 证书和 CA 信任链
  5. 5. 性能到底差多少?
  6. 6. 面试高频追问