TLS和TCP

TLS和TCP

HTTPS 不是只用于“浏览器和服务”

HTTPS = HTTP + TLS + TCP
➡️ 本质是“任何 HTTP 应用 + TLS 加密”


1. 浏览器 ↔ 服务(最常见)

  • Chrome / Safari / App 内 WebView
  • HTTPS + 证书校验 + TLS

2. 服务 ↔ 服务(也很常见)

例如:

  • 微服务调用(A服务 → B服务)
  • App 后端 → 支付系统
  • 后端 → 第三方 API(微信/支付宝/云服务)

➡️ 也可以用 HTTPS(非常常见)


3. 服务间 HTTPS vs 浏览器 HTTPS

浏览器场景

  • 重点:用户身份信任(证书必须被系统信任CA签发)
  • 会严格校验域名 + UI警告

服务间通信

  • 重点:机器身份认证
  • 常见做法:
    • HTTPS(公有 CA 或私有 CA)
    • mTLS(双向 TLS,双方都要证书)

4. 服务 ↔ 服务常见增强版:mTLS

普通 HTTPS

  • 服务器有证书
  • 客户端验证服务器

mTLS(双向 TLS)

  • 服务器有证书
  • 客户端也有证书
  • 双方互相验证身份

➡️ 用于:

  • 微服务
  • 金融系统
  • 内网高安全通信

双方都需要信任同一个体系的CA

✔️ ① 持有证书(身份)

  • 客户端有客户端证书
  • 服务端有服务端证书

✔️ ② 信任CA(验证对方)

  • 客户端信任某些CA(用来验服务端证书)
  • 服务端信任某些CA(用来验客户端证书)

TCP + TLS(HTTPS)核心流程


1. TCP 三次握手

  • SYN
  • SYN + ACK
  • ACK
    ➡️ 建立可靠连接

2. TLS 握手(认证 + 密钥协商)

Client Hello

  • 支持的加密算法
  • Client Random
  • SNI(域名)

Server Hello

  • 选定加密算法
  • Server Random
  • 证书(域名 + 公钥 + CA签名)

证书验证(关键)

  • 用 CA 公钥验证签名(防篡改 + 证明 CA 签发)
  • 检查证书域名是否匹配访问域名

密钥协商

  • 双方用 Random + ECDHE 等生成共享密钥
    ➡️ 得到对称加密密钥(session key)

握手结束

  • Finished message(开始加密通信)

3. HTTPS 数据传输

  • HTTP 数据
    → TLS(对称加密)
    → TCP 传输
    → 对端解密还原 HTTP

4. 证书 & 签名本质

证书

  • 域名 + 公钥 + CA签名

签名

  • CA 用私钥对证书 hash 做签名
  • 作用:防篡改 + 证明来源

5. 核心一句话

  • TCP:连通
  • TLS:加密 + 身份认证
  • 证书:证明“域名 ↔ 公钥”绑定可信