HTTPS = HTTP + TLS/SSL,在传输层对数据进行加密,确保通信的机密性、完整性和身份认证
所有数据通过 TLS 加密隧道传输,即使被截获也无法读取明文内容
通过数字证书(CA 签发)验证服务器身份,防止中间人伪造
MAC 消息认证码确保数据在传输过程中未被篡改
建立安全连接的核心过程(TLS 1.2 握手,共 7 步)
客户端发送支持的 TLS 版本、加密套件列表(如 ECDHE-RSA-AES128-GCM-SHA256)、随机数 Client Random 和可选的 SNI(Server Name Indication)
服务器从客户端列表中选择 TLS 版本 和 加密套件,发送 随机数 Server Random,以及 数字证书(含公钥)
客户端验证证书链:服务器证书 → 中间 CA → 根 CA,检查有效期、域名匹配、签名合法性。根 CA 证书预装在操作系统/浏览器信任库中
客户端根据证书中的公钥参数,生成 Pre-Master Secret,通过 ECDHE(椭圆曲线 Diffie-Hellman)算法,双方各自计算出相同的 会话密钥(Session Key)。私钥不参与密钥传输,实现前向安全
客户端发送 ChangeCipherSpec 消息,通知服务器后续消息将使用协商好的 会话密钥 进行对称加密,并发送 Finished 消息(加密后的握手摘要)
服务器同样发送 ChangeCipherSpec 和加密的 Finished 消息。双方验证彼此的 Finished 消息,确认握手未被篡改
握手完成!后续所有 HTTP 请求/响应都通过 会话密钥 进行对称加密传输(如 AES-GCM),配合 HMAC 保证数据完整性
HTTPS 综合使用非对称加密、对称加密和散列算法实现安全通信
用于握手阶段的密钥交换和身份认证
用于握手完成后实际数据的加密传输
用于验证数据完整性和生成 MAC
PKI 信任链确保服务器身份可信
一目了然的区别
| 对比项 | HTTP | HTTPS |
|---|---|---|
| 默认端口 | 80 | 443 |
| 安全性 | 明文传输 | 加密传输 |
| 证书要求 | 不需要 | 需要 CA 签发的 SSL/TLS 证书 |
| 加密类型 | 无加密 | 非对称加密(握手)+ 对称加密(传输) |
| 数据完整性 | 无法验证,易被篡改 | HMAC / AEAD 保证完整性 |
| SEO 影响 | 搜索引擎会降权 | Google / 百度优先收录 |
| 性能开销 | 无额外开销 | 握手增加 1-2 RTT,现代硬件影响可忽略 |
从浏览器输入 URL 到页面渲染的全过程