易君召
发布于 2026-09-11 / 作者:易君召 / 0 阅读
0

HTTP 协议如何实现安全的数据传输

原生 HTTP 本身明文传输,无加密、无身份校验、无完整性保护,并不安全。HTTP 实现安全传输,核心方案是HTTPS(HTTP over TLS/SSL),即在 HTTP 下层叠加 TLS 安全层。

一、HTTPS 整体原理

HTTPS = HTTP + TLS(传输层安全协议,旧版叫 SSL)

  • HTTP 应用层报文不再直接交给 TCP;

  • HTTP 报文先交给TLS 层做加密、签名;

  • 加密后的二进制数据再通过 TCP 传输;

  • 接收端 TLS 解密,还原原始 HTTP 报文交给应用层。

TLS 主要解决三大安全问题

  1. 加密(防窃听):传输内容密文,中间人无法读取原始数据

  2. 身份认证(防钓鱼 / 伪装服务器):证书验证服务器身份(可选客户端证书做双向认证)

  3. 完整性校验(防篡改):消息摘要,报文被中间人修改后校验失败

二、TLS 握手流程(简化版,TLS1.2)

  1. 客户端 Hello:客户端发给服务端,支持的 TLS 版本、加密套件、随机数

  2. 服务端 Hello:服务端选定 TLS 版本、加密套件,返回服务端随机数 + 服务器数字证书

  3. 证书校验:客户端验证证书:证书是否由可信 CA 签发、域名匹配、有效期合法、证书签名是否有效。证书内含服务器公钥

  4. 密钥协商

    • 客户端生成预主密钥,用服务器公钥加密发给服务端;

    • 服务端用自己私钥解密拿到预主密钥;

    • 双方用客户端随机数、服务端随机数、预主密钥,各自生成会话对称密钥

  5. 切换加密模式:双方告知对方,后续通信全部使用协商好的对称密钥加密传输

  6. 握手完成:握手结束,开始传输加密 HTTP 请求 / 响应

TLS1.3 大幅简化握手:多数场景1-RTT,减少握手往返,性能更好。

两种密钥

  • 非对称密钥(RSA/ECC):只用于握手阶段,身份认证 + 协商对称密钥;计算慢,不用于业务数据加密

  • 对称密钥(AES 等):握手成功后,真正加密 HTTP 报文;速度快,适合大量数据传输

三、证书体系

数字证书由 CA(证书颁发机构)签发,包含:

  • 服务器域名、服务器公钥、CA 签名、有效期 浏览器 / 操作系统内置可信 CA 根证书列表,用来校验服务端证书合法性。

双向 HTTPS 认证:除了服务器证书,客户端也要持有客户端证书,服务端校验客户端身份,常用于内网、API 网关。

四、除 HTTPS 外的 HTTP 安全增强手段

HTTPS 是传输层安全,下面是应用层配套安全措施:

  1. HSTS:响应头Strict-Transport-Security,强制浏览器必须使用 HTTPS 访问,禁止降级 HTTP,防止 HTTP 劫持

  2. CSP:内容安全策略,防止 XSS 注入攻击

  3. Secure & HttpOnly Cookie:Cookie 标记 Secure,仅 HTTPS 下传输;HttpOnly 禁止 JS 读取 Cookie,防 Cookie 窃取

  4. 证书固定(HPKP,现已废弃):曾经用来绑定证书公钥,防止 CA 被劫持

  5. HTTP 认证:Basic Auth、Digest Auth(注意:Basic Auth 即使 HTTPS 下,账号密码只是 base64 编码,不是加密)

  6. API 签名:请求参数 + 时间戳做哈希签名(如 HMAC),应用层防篡改、防重放攻击,常用于开放接口

五、常见误区

  1. ❌ HTTPS 能保证业务逻辑安全:HTTPS 只保证传输链路安全,不能防止服务端代码漏洞(SQL 注入、业务越权)

  2. ❌ HTTPS 加密后完全看不到内容:服务端可以解密看到完整 HTTP 报文;抓包工具安装根证书后也可解密调试

  3. ❌ 有证书就一定安全:证书过期、域名不匹配、使用弱加密套件,依然存在风险

六、总结

原生 HTTP 无法安全传输,HTTPS (TLS) 是 HTTP 安全传输的标准方案: 在 TCP 与 HTTP 中间插入 TLS 层,通过非对称密码完成身份认证与会话密钥协商,再用对称加密对 HTTP 报文加密传输,实现防窃听、防篡改、防中间人劫持;再配合 HSTS、Cookie 安全标记等 HTTP 头,进一步加固。