引入
HTTP 可以传输数据,但明文传输会让中间链路看到甚至修改内容。登录密码、Cookie 和接口数据一旦经过不可信网络,就需要额外的安全层保护,这就是 HTTPS 要解决的问题。
正文
定义
HTTPS 是运行在 TLS 之上的 HTTP。它通过加密保护内容,通过证书验证服务器身份,并通过完整性校验发现传输过程中的篡改。
HTTPS 解决什么问题
| 目标 | 解决的问题 | 主要机制 |
|---|---|---|
| 机密性 | 防止第三方直接读取内容 | 对称加密 |
| 身份认证 | 确认连接的是目标服务器 | 数字证书与证书链 |
| 完整性 | 发现数据被中途修改 | 消息认证与校验 |
建立连接的大致过程
- 客户端连接服务器,并发起 TLS 握手。
- 服务器返回证书,客户端校验证书域名、有效期和信任链。
- 双方协商加密算法,并建立会话密钥。
- 后续 HTTP 数据使用会话密钥加密传输。
非对称加密主要用于身份验证和安全协商,对称加密主要用于实际数据传输。这样可以兼顾安全性和性能。
前端开发中的注意点
- 页面使用 HTTPS 时,通常不能直接请求 HTTP 资源,否则可能触发混合内容阻止。
SecureCookie 只会在 HTTPS 请求中发送。- HTTPS 不能阻止服务端代码泄露数据,也不能替代权限校验。
- 证书有效不等于业务接口安全,仍需正确处理认证、授权和输入校验。
引出
HTTPS 保护的是传输链路,而不是所有应用层风险。继续排查网络问题时,可以在浏览器 Network 面板中分别观察 TLS 连接、请求头、响应头和 状态码,避免把证书问题和接口业务错误混在一起。