
看完本文,你会搞懂:HTTPS 为啥出现、HTTP 还能不能用、以及怎么让自己的网站“一键穿盔甲”。
开篇:小禾在咖啡店点了一杯“中间人”
小禾带着电脑去咖啡店写代码,Wi‑Fi 名字很有安全感:FREE_WiFi_5G_极速。
他心想:这名字看着就很快,应该也很安全吧?
然后他登录自己的测试站点(还没上 HTTPS),顺手在后台改了个配置。
隔壁桌一位“热心网友”也顺手看到了:
- 你访问了哪个页面(路径、参数一清二楚)
- 你提交了什么内容(表单、接口请求都能被窥到)
- 你是谁(Cookie/Token 如果没保护好,可能直接被拿走)
小禾当场明白了一个道理:
HTTP 在很多场景里,不是“传输协议”,更像“公开广播”。
先把话说人话:HTTPS 解决的是什么?
HTTPS 其实就是:HTTP + TLS(加密 + 防篡改 + 验身份)。
它主要解决三件很现实的事:
- 不想被偷看(保密性)
- 不想被改内容(完整性)
- 不想被冒充(身份认证)
你可以把 HTTP 想象成“明信片”:
- 路上谁都能看内容
- 谁都能拿笔改两下
- 你也很难确认这张明信片真的是“你以为的那个人”寄的
HTTPS 则像“带封条的快递 + 官方盖章 + 递送过程全程监控”。
HTTP 不行吗?行,但是有代价
很多人问:我就做个小站,HTTP 不也跑得好好的?
确实,“能跑”和“能扛”不是一回事。HTTP 的典型风险包括:
- 同一网络的人能旁观:咖啡店 Wi‑Fi、公司内网、酒店网络,甚至你家路由器都算“路上”。
- 路上能被插广告/换内容:你返回的页面、JS、图片都可能被替换(用户还以为是你干的)。
- 账号体系更脆:登录、Cookie、Token 一旦被截获,后果通常不是“丢一次会话”这么简单。
- 浏览器会直接劝退用户:地址栏“不安全”提示、部分能力必须在安全上下文(Secure Context)才开放。
那 HTTP 有没有还能用的场景?
- 纯内网:比如仅在 VPN/零信任网络里访问、且链路本身已经加密/隔离。
- 完全公开且无状态:例如你真的是“公开明信片”,不登录、不写入、不带 Cookie。
但现实里,绝大多数站点都逃不过:登录、表单、统计脚本、CDN、第三方资源……一旦沾上,HTTP 就开始像“开着车门上高速”。
HTTPS 从哪来:它不是天生的,是被逼出来的
时间线简单记:
- HTTP:最早的 Web 传输协议,主打一个“能用就行”。
- SSL:90 年代浏览器与电商兴起,Netscape 推了 SSL(Secure Sockets Layer)来保护传输。
- TLS:后来标准化与演进,SSL 逐步被 TLS(Transport Layer Security)取代。
如果你就爱抠细节,大概是这样(不用背,考了也不加分):
- 1995 左右:SSL 2.0 出现
- 1996:SSL 3.0(一代经典,但已经退役)
- 1999:TLS 1.0(SSL 的“改名升级版”)
- 2008:TLS 1.2(至今仍很常见)
- 2018:TLS 1.3(更现代、更快)
现在大家口头上说“HTTPS”,底层基本就是:
- TLS 1.2(仍很常见)
- TLS 1.3(更现代、更快、更安全)
你可以把它理解为:HTTPS 这件“盔甲”经历了多次迭代,现在的版本早就不是当年的“铁皮”了。
HTTPS 到底怎么做到的?
想象一下:小禾要和你的网站服务器聊天,但路上可能有人偷听、篡改、冒充。
HTTPS 的流程可以粗暴地概括成三步:
1)先确认“你是谁”(证书:身份证 + 防伪)
服务器会出示一个“证书”(Certificate):
- 证书里写着:这个域名属于谁
- 证书有“权威机构”(CA)签名:相当于防伪章
浏览器内置了一堆它信任的 CA 列表。
所以浏览器能回答一个关键问题:
“你这个站点,真的是 example.com 吗?还是隔壁桌假扮的?”
2)再商量一个“只有你我知道的暗号”(密钥协商)
确认身份后,双方会协商出一个“会话密钥”(对称密钥)。
后续通信基本都用这个密钥加密,因为它快、适合大量数据传输。
你不需要记住算法名,只要记住一个比喻:
- 公钥/证书:用来“安全地认识彼此”
- 会话密钥:用来“高效地聊一整场”
3)从此以后:能加密、能防改、还能发现假货
HTTPS 不只是“看不懂内容”:
- 加密:别人看不到你发了什么
- 完整性校验:别人改了内容会被发现(包裹封条破了)
- 认证链:别人想冒充站点会被浏览器拦住(证件对不上)
我怎么让自己的网站用上 HTTPS?
给你三条路线,按“省心程度”排序。
路线 A:用平台/托管(最省心)
如果你的网站在这些平台上,基本属于“顺手就有”:
- Vercel / Netlify / GitHub Pages(配合自定义域名)
- 各大云厂商的对象存储静态站点 + CDN
- Cloudflare(给你的域名套一层)
你要做的通常只有:
- 绑定域名
- 打开“强制 HTTPS / 自动证书”
- 配好 DNS(A/AAAA/CNAME 按平台提示)
如果你用 Cloudflare,尽量用端到端加密的模式(例如 “Full (strict)” 这类),别让你的“盔甲”只穿在半路上。
路线 B:你有一台服务器(Nginx + Let’s Encrypt)
这是最常见的“自己掌控型”方案。
你需要的材料:
- 一个域名(例如
example.com),并且 DNS 指向你的服务器 IP - 服务器开放 80/443 端口(至少申请证书时 80 要能通)
- 一个反向代理(Nginx/Apache)或网关(Ingress)
然后用 Let’s Encrypt(免费证书)+ ACME 工具自动签发/续期。
如果你用 Nginx,思路是:
- 先能用 HTTP 访问到站点(用于验证域名归属)
- 申请证书
- 配置 443 + 证书路径
- 把 80 口全站跳转到 443
- 开启自动续期
一个典型 Nginx 结构长这样(示意):
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
如果你在 Ubuntu 上,certbot 的常见用法大概是这样(示意,按你的系统与 Web 服务器调整):
sudo apt update
sudo apt install certbot python3-certbot-nginx
# 让 certbot 自动申请证书并改好 Nginx 配置
sudo certbot --nginx -d example.com -d www.example.com
# 看看自动续期是否正常
sudo certbot renew --dry-run
证书申请与续期工具常见是 certbot(也有很多替代品),关键点是:
- 自动续期要做:Let’s Encrypt 证书有效期较短,自动化才是正道。
- 检查“混合内容”:页面走 HTTPS,但图片/脚本还在 HTTP,会被浏览器拦或降级。
- 谨慎开启 HSTS:它会“强制浏览器以后只走 HTTPS”。建议先小步试运行,再逐步加大
max-age。
HSTS 大概长这样(别一上来就 includeSubDomains,先确认自己不坑自己):
add_header Strict-Transport-Security "max-age=86400" always;
路线 C:用 Caddy(真的很懒人)
如果你愿意换网关,Caddy 的体验常被称为:
“我还没来得及写配置,它就帮我把证书搞好了。”
很多场景里你只要写:
example.com { reverse_proxy localhost:8000 }
剩下的交给它自动申请与续期(当然前提仍是域名与端口可达)。
小禾踩过的坑:你可能也会踩
-
“我已经配了 HTTPS,怎么还是不安全?”
多半是页面里还有http://的资源(图片/脚本/接口),浏览器会提示 Mixed Content。 -
“证书申请失败,提示验证不过”
常见原因:DNS 没生效、80 端口不通、被 CDN/安全组挡了、域名解析到错的 IP。 -
“我想要
*.example.com通配符证书,怎么老是失败?”
通配符证书通常需要走 DNS 验证(DNS‑01),也就是要你在域名解析里临时加一条记录证明“域名是你的”。 -
“HTTPS 会不会很慢?”
以前确实有人担心握手成本;现在 TLS 1.3、HTTP/2/3、会话复用、硬件加速都把这事“卷平”了。
对多数网站来说:慢的通常不是 TLS,是你的图片、JS 和数据库。 -
“上了 HTTPS 就绝对安全了吗?”
不。HTTPS 保护的是“你到服务器这段路”。
服务器本身如果被入侵、或者你把敏感信息写进日志/前端代码里,HTTPS 也救不了。 -
“HTTPS 是不是让我‘隐身’了?”
也不是。HTTPS 主要把“内容”加密了;旁观者通常仍能看到你在访问哪个 IP/域名(但看不到你具体在看什么)。 -
“我都 HTTPS 了,怎么 Cookie 还会被偷?”
如果你没给 Cookie 加上Secure/HttpOnly/SameSite等属性,安全感会打折扣(尤其是有 XSS 的时候)。
HTTPS 的前景:会被替代吗?
结论先说:短期内不会被替代,只会变成“默认空气”。
原因很简单:
- “加密 + 防篡改 + 验身份”是刚需,不是时髦
- 新协议也仍然需要这些能力
你可能会听到这些词:
- HTTP/3:跑在 QUIC 上,但安全性依旧离不开 TLS(更准确说是 TLS 1.3 的那套安全模型)。
- 更隐私的握手/域名保护:一些新能力在减少“旁观者能看到的信息”。
- 自动化更彻底:证书签发/续期会越来越无感,像“水电煤”一样。
所以更现实的变化是:
未来你不是“要不要 HTTPS”,而是“谁还敢不 HTTPS”。
结尾:小禾的一句话总结
如果你的网站需要登录、表单、支付、管理后台,甚至只是想让用户放心点:
别纠结了,上 HTTPS。HTTP 能跑,但 HTTPS 才能让你睡得着。
2059

被折叠的 条评论
为什么被折叠?



