1. 路上的人能看到什么
同一个请求,走 HTTP 和走 HTTPS,中间经过的网络设备看到的东西完全不同。
| 路上能看到的 | HTTP | HTTPS |
|---|---|---|
| 访问的域名 | 能 | 能(握手时的域名字段是明文) |
| 访问的具体页面路径 | 能 | 不能 |
| 提交的账号密码 | 能 | 不能 |
| 页面内容 | 能,还能篡改 | 不能,篡改会被发现 |
2. 握手:一个往返建好加密通道
TLS 1.3 把完整握手压到一个往返。浏览器第一句话就带上密钥交换参数,服务器回一句话就能开始加密传输。
依据:《RFC 8446:TLS 1.3》第 2 节。
3. 证书:证明对面就是这个网站
加密只保证没人偷听,还要确认对面不是冒牌货。浏览器检查网站证书是不是由它信任的机构签发、域名对不对、有没有过期。
免费证书机构会先确认申请人真的控制这个域名,比如要求在域名的 DNS 里放一条指定记录,然后才签发。
4. 常见误解
| 说法 | 实际情况 |
|---|---|
| 有小锁的网站就可信 | 小锁只说明连接加密、域名对得上,不代表网站本身靠谱 |
| HTTPS 会明显拖慢网页 | TLS 1.3 握手只多一个往返,连接复用后几乎感觉不到 |
| HTTPS 能隐藏我访问了哪个网站 | 域名在握手中仍是明文,只有路径和内容被加密 |
资料链接
| 资料 | 地址 |
|---|---|
| 《RFC 8446:TLS 1.3》 | https://www.rfc-editor.org/rfc/rfc8446 |
| 《MDN:Transport Layer Security》 | https://developer.mozilla.org/en-US/docs/Web/Security/Transport_Layer_Security |
| 《Let's Encrypt:How It Works》 | https://letsencrypt.org/how-it-works/ |