一、HTTPS 是什么
HTTPS(HyperText Transfer Protocol Secure,安全超文本传输协议),并不是全新的协议,本质是 HTTP 协议运行在 TLS(旧称SSL)加密通道之上。
- 默认端口:443;HTTP默认80端口。
- 底层传输:TCP → TLS → HTTP。
HTTP是明文传输,容易被窃听、篡改、劫持;HTTPS依靠TLS提供三大核心安全保障:
- 加密:传输内容加密,中间人无法读懂数据;
- 完整性:数据传输过程一旦被篡改,接收方可以检测出来;
- 身份认证:验证服务器身份,防止访问伪造的钓鱼网站。
SSL是早期版本,存在安全漏洞,现在都使用TLS(TLS1.2、TLS1.3),日常口语依旧习惯叫SSL证书。
二、HTTPS 通信流程
HTTPS分为两大阶段:TLS握手阶段 + HTTP通信阶段
阶段1:TLS握手(建立加密通道)
- 客户端Hello
客户端向服务器发送支持的TLS版本、加密套件列表、随机数(Client Random)。 - 服务端Hello
服务器选定双方都支持的TLS版本与加密套件,返回随机数(Server Random),同时下发服务器数字证书。 - 证书校验
客户端验证证书:由可信CA签发、域名匹配、证书未过期、证书签名合法。校验失败浏览器直接弹出安全警告。 - 生成预主密钥
客户端生成预主密钥(Pre-Master Secret),使用服务器公钥加密后发给服务器。 - 双方生成会话密钥
客户端、服务器各自使用三个随机数(Client Random + Server Random + Pre-Master Secret),独立算出相同的对称会话密钥。
会话密钥只用于本次连接,每次握手都会重新生成。
- 握手完成
双方互相发送“Finished”报文,使用会话密钥加密校验,确认握手成功。
✅ TLS握手成功之后,后续所有HTTP报文全部使用对称密钥加密传输。
TLS1.3做了大幅优化:握手由原来2RTT缩短到1RTT,支持0-RTT,减少网络往返。
阶段2:HTTP请求响应
加密通道已经建立,客户端发送加密后的HTTP请求,服务器解密处理,返回加密后的HTTP响应。数据包即使被抓包,也只能看到密文。
三、数字证书与CA
证书是HTTPS身份认证的核心,证书里面包含:
- 网站域名、服务器公钥、证书有效期、CA机构签名。
CA(证书颁发机构):可信第三方,负责签发数字证书。
浏览器操作系统内置根证书库,存放各大可信CA的根公钥,用来验证网站证书的合法性。
证书作用:证明这个公钥确实属于该域名的服务器,防止中间人攻击。
四、两种加密算法的分工(重点)
- 非对称加密(RSA / ECDSA)
- 作用:证书身份校验 + 协商会话密钥
- 特点:加解密速度慢,只在握手阶段少量使用。
- 对称加密(AES)
- 作用:传输HTTP业务数据(网页、接口数据、Cookie)
- 特点:速度快,握手成功后全部业务流量使用对称加密。
一句话总结:非对称加密用来协商密钥,对称加密用来传业务数据。
五、HTTPS 解决了HTTP的哪些问题
✅ 防窃听:流量加密,中间人无法读取内容
✅ 防篡改:消息认证码MAC,数据包被修改后校验失败直接丢弃
✅ 防冒充:证书校验,防止钓鱼网站伪装成目标网站
⚠️ HTTPS不能解决的问题:
- 不能防范网站本身的恶意内容(网站自己推送病毒、诈骗信息HTTPS无法识别)
- 证书被伪造、使用非法根证书会被劫持(内网代理、企业网管审计场景)
- 无法防止服务器侧数据泄露
六、HTTP 和 HTTPS 对比
| 项目 | HTTP | HTTPS |
|---|---|---|
| 端口 | 80 | 443 |
| 底层 | TCP | TCP + TLS |
| 传输内容 | 明文 | 加密密文 |
| 身份校验 | 无 | CA证书校验服务器身份 |
| 性能 | 开销小 | TLS握手带来少量性能损耗(TLS1.3大幅降低) |
| SEO/浏览器标记 | 不安全,浏览器提示警告 | 安全,浏览器显示小锁图标 |
七、常见HTTPS相关概念
- 证书类型:DV(域名验证,免费证书如Let’s Encrypt)、OV、EV扩展验证(企业证书)
- 证书链:网站证书 → 中间证书 → 根证书
- HSTS:强制浏览器必须使用HTTPS访问,禁止降级HTTP
- OCSP:证书吊销状态查询,检查证书是否已经被吊销
八、小结
- HTTPS ≠ 新协议,HTTP + TLS,端口443;
- 流程:先TLS握手协商加密会话密钥,再传输加密HTTP报文;
- TLS握手依靠数字证书验证服务器身份,抵御中间人攻击;
- 握手阶段用非对称加密协商密钥,业务传输用对称加密提升速度;
- HTTPS提供加密、防篡改、服务器身份认证;现代网站、接口必须启用HTTPS。
思考题:HTTPS握手时,为什么不直接用非对称加密传输所有网页数据?
0 条笔记