普通视图

发现新文章,点击刷新页面。
昨天 — 2026年3月15日首页

HTTP裸奔,HTTPS穿盔甲——它们有什么区别?

作者 牛奶
2026年3月15日 15:27

你有没有想过一个问题:为什么有的网站显示"不安全",有的显示"安全"?同样是HTTP,加了个"S"到底有什么区别?

今天,我用写信的故事,来讲讲HTTPS到底在加密什么。


原文地址

墨渊书肆/HTTP裸奔,HTTPS穿盔甲——它们有什么区别?


HTTP是怎么"裸奔"的?

想象一下,你给朋友寄信。

如果用HTTP,相当于你把信写在明信片上,直接塞进邮筒。

邮递员、门卫、邻居——谁都能看到信里的内容。

你写的「我爱你」「我的密码是123456」——所有人都一览无余。

这就是HTTP的现状:数据是明文传输的,谁都能偷看。

HTTP会被谁偷看?

  • 隔壁老王连上了同一个WiFi
  • 运营商能查到你在访问什么网站
  • 某些"中间人"专门拦截网络流量

所以在HTTP上输密码、填银行卡——跟裸奔没什么区别。


HTTPS是怎么"穿盔甲"的?

现在换一种方式。

你把信放进一个带锁的盒子里,只有你和朋友有钥匙。

邮递员拿到了盒子?没关系,他打不开。

这就是HTTPS:数据是加密传输的,别人看到了也看不懂。

HTTPS怎么做到加密?

这就涉及到两种加密方式:对称加密非对称加密


对称加密:一把钥匙(代表:AES)

对称加密就像一把钥匙,能开锁也能锁门。

  • 加密用这把钥匙
  • 解密也用这把钥匙

AES(Advanced Encryption Standard,高级加密标准)就是最典型的对称加密算法。

  • 优点:速度快,加密1G数据可能只需要几毫秒
  • 缺点:密钥传输问题——怎么把这把钥匙安全地交给对方?

现实中的问题

你想给朋友寄一把钥匙过去,但邮递员能看到啊!他拿到钥匙之后,不就能打开你的盒子了吗?

这就是对称加密的困境:钥匙送不到对方手里。

AES到底有多强?

AES是现在最常用的对称加密算法,被美国政府采用,取代了之前的DES。

它有多安全?

  • AES-128:密钥长度128位,暴力破解需要上万亿年
  • AES-256:更安全,连量子计算机都很难破解

所以AES本身是非常安全的,关键是怎么安全地把密钥送到对方手里。


非对称加密:两把钥匙(代表:RSA)

后来密码学家发明了非对称加密,像是一把神奇的锁。

它配两把钥匙

  • 公钥(Public Key):锁,可以复制多份分发出去
  • 私钥(Private Key):钥匙,只有自己手里有

RSA就是最著名的非对称加密算法,由三位数学家Rivest、Shamir、Adleman的名字命名。

RSA是怎么工作的?

  1. 你生成一对密钥:公钥私钥
  2. 公钥(锁)公开,谁都可以拿到
  3. 别人用你的公钥加密信息
  4. 只有你手里的私钥能解密

怎么用?

  1. 你把公钥(锁)寄给朋友
  2. 朋友把信放进盒子里,用锁锁好
  3. 只有你手里的私钥(钥匙)能打开

这样一来,公钥寄出去没关系,反正只能用来"锁",不能用来"开"。

RSA的缺点

  • 非常:比对称加密慢几百甚至上千倍
  • 只能加密少量数据:一般用来加密"密钥",而不是大量内容

这就是为什么不能全程用RSA加密。


HTTPS是怎么结合两者的?

HTTPS很聪明,它把两者结合起来用:

  1. 用RSA等非对称加密,把一把"对话密钥"(会话密钥)安全地传给对方
  2. 之后双方都用"对话密钥"做AES对称加密,速度就快了

这就跟做生意一样:

  • 见面谈判(慢,但安全)→ 确立合作方式,交换暗语
  • 之后用暗语交流(快)→ 正式合作

HTTPS也是这个道理:先"握手"一次确定加密方式(用RSA),之后就快(用AES)了。

具体流程

第一次访问(握手):
1. 浏览器:你好,我想访问 example.com
2. 服务器:你好,这是我的证书(包含RSA公钥)
3. 浏览器:(验证证书)OK,我生成一个随机数作为会话密钥
4. 浏览器:用服务器的RSA公钥加密会话密钥,发给服务器
5. 服务器:用RSA私钥解密,得到会话密钥

后续通信:
6. 浏览器 & 服务器:用会话密钥 + AES算法,加密/解密所有数据

证书:怎么证明"你是你"?

等等!上面的方案有个漏洞。

如果有个坏人假冒服务器呢?

比如他拦截了你的公钥请求,然后把自己的公钥寄给你——这叫"中间人攻击"。

你以为是跟朋友通信,实际上是跟坏人通信!

怎么办?

你需要证明身份

HTTPS引入了证书机制,就像身份证一样。

证书是怎么工作的?

  1. 网站去CA机构(Certificate Authority,证书颁发机构)申请一个证书
  2. CA机构核实网站身份,用自己的私钥给证书"签名"
  3. 证书里包含:网站域名、网站的RSA公钥、CA的签名
  4. 浏览器访问网站时,先验证证书

浏览器内置了一些可信的CA机构(比如DigiCert、Let's Encrypt、GlobalSign),就像公安局一样。

如果证书是假的,或者域名对不上——浏览器会显示"不安全"。

证书链:验证过程

你可能会想:CA机构 themselves 谁来证明?

这就是证书链

  • 根证书:浏览器内置,最可信
  • 中间证书:CA机构颁发
  • 服务器证书:你申请的

浏览器会一级一级验证上去。


TLS握手:到底发生了什么?

你访问一个HTTPS网站时,背后会发生这些事情:

1. 浏览器:你好,我想访问 example.com(用的是HTTPS)
2. 服务器:你好,这是我的证书(包含RSA公钥)
3. 浏览器:(验证证书)OK,这是合法的网站
4. 浏览器:我生成一个随机数(会话密钥),用你的公钥加密后发给你
5. 服务器:用我的私钥解密,得到会话密钥
6. 浏览器 & 服务器:好的,用这个会话密钥 + AES算法,开始加密通信

这就是著名的TLS握手(HTTPS = HTTP + TLS)。

握手完成之后,后续的数据传输就都是加密的、很快的。


SSL/TLS/HTTPS到底是什么关系?

  • SSL(Secure Sockets Layer):最早的安全协议,1994年由Netscape发明
  • TLS(Transport Layer Security):SSL的升级版,1999年发布,SSL的继任者
  • HTTPS:HTTP + TLS,简单说就是"穿上TLS盔甲的HTTP"

现在基本都用TLS,但很多人还是习惯叫HTTPS为SSL。


HTTPS有什么缺点?

虽然HTTPS很好,但不是完美的。

1. 慢一点

TLS握手需要时间,首次访问会慢一些。

但现在有TLS 1.3,0-RTT握手,几乎没影响。

2. 要花钱

HTTPS需要证书,以前很贵。

现在有Let's Encrypt等免费CA,证书基本不要钱。

3. 不是100%安全

HTTPS只加密传输过程,但如果:

  • 服务器被黑客攻破
  • 用户中了木马
  • 用了弱密码

——一样完蛋。

HTTPS不是万能的,但它让"偷看"变得几乎不可能。


总结:HTTP vs HTTPS

\ HTTP HTTPS
传输方式 明文 加密
加密算法 RSA + AES
速度 稍慢
安全性 裸奔 穿盔甲
证书 不需要 需要CA颁发
端口 80 443
用途 不涉及隐私的页面 登录、支付、敏感操作

写在最后

现在你应该懂了:

  • HTTP = 明信片,谁都能看
  • HTTPS = 带锁的盒子,只有你能开
  • RSA = 一把锁配两把钥匙,用来安全地送"钥匙"
  • AES = 用"钥匙"快速加密大量数据
  • 证书 = 身份证,证明"服务器是服务器"

下次看到浏览器显示"不安全",就别在上边输密码了。

看到"安全",也不是100%安全——但至少,不会"裸奔"了。

❌
❌