公众号旧文
为什么浏览器总说 HTTP 不安全?
上篇文章我发现有人每天在拿我的服务器测速发出后,有读者在评论区截图指出,下载我的测速文件:http://156.246.91.170:18080/100M.bin
会被浏览器提示“不安全”:

这篇文章,咱们就来说说,HTTP为什么会“不安全”。
浏览器对 HTTP 连接的警示,真正想表达的是:
这个连接没有加密。
互联网最早使用的网页协议是 HTTP。 HTTP 有一个很大的特点:所有数据都是明文传输。
也就是说,当你访问一个 HTTP 网站时:
- 用户名
- 密码
- 表单数据
- 网页内容
在网络中都是可以被直接看到的。
如果有人在中间监听网络,比如:
- 公共 WiFi
- 被入侵的路由器
- 运营商节点
这些数据就可能被读取。
后来互联网引入了 HTTPS,它在 HTTP 之上加入了一层加密协议: Transport Layer Security(TLS)。
简单来说:
| 协议 | 特点 |
|---|---|
| HTTP | 明文传输 |
| HTTPS | 加密传输 |
而且 HTTPS 还有一个重要功能:
验证服务器身份。
服务器会提供一个 SSL Certificate,浏览器会检查:
- 证书是否合法
- 证书是否属于这个网站
如果不匹配,浏览器就会直接报警。
所以浏览器标记 HTTP 为“不安全”,并不是说网站有问题,而是:
这种通信方式本身没有保护机制。
既然不安全,为什么我还要用HTTP来发布我的测速文件?
原因很简单:
IP 地址很难使用 HTTPS。
HTTPS 依赖证书体系。 服务器必须提供一个 SSL Certificate。
证书里面会写明:
这个证书属于哪个域名
例如:
example.com
www.example.com
浏览器会检查:
- 用户访问的域名
- 是否和证书一致
问题在于:
IP 地址没有“所有权验证”。
证书机构通常通过验证:
- DNS 记录
- 域名控制权
来确认申请人确实拥有这个域名。
但 IP 地址没有这种机制,所以大多数证书机构都不会给 IP 发证书。
此外,现代 HTTPS 还依赖一个技术:
Server Name Indication(SNI)
它的作用是:在连接建立时告诉服务器要访问哪个域名。
这样一个 IP 可以托管多个网站。
但如果访问的是:
https
:
//1.2.3.4
就没有域名信息,服务器也无法判断使用哪个证书。
因此很多测速节点为了简单,直接提供:
http
:
//IP/100M.bin
因为测速文件通常:
- 不涉及隐私
- 不需要登录
- 只是公开下载
所以使用 HTTP 反而最简单。
浏览器虽然会提示 “不安全”,但对测速来说基本没有影响。