HTTPS

一、HTTP 的烦恼

1.​最初的网络沟通:HTTP​

  • 想象一下,你(浏览器)想从一个书店(网站服务器)买本书。
  • 你们用一种叫 ​HTTP​ 的语言沟通。你说:“我要买书”,书店说:“好的,书给你,钱给我”
  • ​问题来了:这种沟通像在嘈杂的集市上喊话!​​
    • ​谁都能听见(窃听:​​ 旁边路过的人(黑客)能清清楚楚听到你要买什么书,甚至你的银行卡号和密码(如果你喊出来了)!这就是​信息泄露
    • ​谁都能插嘴篡改(篡改:​​ 有个坏蛋(中间人)在你和书店之间,他听到你说“给书店转账100元”,他可能偷偷改成“给坏蛋转账100元”!而你和书店可能都没发现话被改了。这就是数据篡改
      • ​谁都能冒充书店(冒充:​​ 集市上可能有个假书店,招牌做得和真书店一模一样(假网站)。你冲着假书店喊“我要买书”,把钱给了假书店,结果书没拿到,钱也没了!这就是​网络钓鱼/身份伪造

2.​痛点总结:HTTP 不安全

  • 它传输的所有内容(账号、密码、聊天记录、银行卡号等)都是​明文的,所有人都可以看到
  • 无法验证​和你说话的是不是真正的那个网站
  • 它​无法保证​信息在路上没被人偷看或篡改

👉 一句话:HTTP 无法验证通信对方的真实身份,也无法保证传输数据的机密性和完整性

​二、HTTPS 的诞生

为了解决 HTTP 的这些大麻烦,聪明的人们发明了 ​HTTPS。你可以把它理解为 ​HTTP + Security (安全)​。给沟通加上了“保险箱”和“身份证”​​。

HTTPS 的核心思想是:

  1. ​加密对话内容​:让你和网站的对话变成只有你们俩能懂的“密语”,别人就算听到也看不懂。
  2. ​验证网站身份​:确保你是在和真正的那个网站说话,而不是骗子。
  3. ​保证信息完整​:确保信息在传输过程中没被偷偷修改。

三、HTTPS 的工作原理

现在,想象你和书店决定在一个带隔音、带锁、需要验明正身的高级包间里谈生意(这就是 HTTPS 连接)。建立这个包间需要几个关键步骤:

1.​打招呼和亮证件(Client Hello & Server Hello + Certificate)

  • 你(浏览器)说:“嗨!书店吗?我想用 HTTPS 聊天(Client Hello)。我会说 A, B, C 几种‘密语’(支持的加密算法),这是我的一个随机数(Client Random)。”
  • ​真书店(服务器)回应:​​ “你好!是我(Server Hello)。咱们用 B 这种‘密语’吧(协商选定加密算法),这是我的一个随机数(Server Random)。这是我的身份证(数字证书)! 你看,上面有我的店名(域名)、我的公钥(像一把可以打开的锁头)、还有权威机构(CA)的盖章签名呢!”

2.检查身份证(验证证书):​​

  • ​你(浏览器)要做的事:​​

    • 看发证机关(CA)可信吗? 你手机(浏览器)里存了一堆权威机构的名单(信任的根证书)。你看这个证书是不是这些权威机构之一发的?或者是不是它们信任的机构发的?(证书链验证)
    • 看身份证有效吗? 检查是否在有效期内
    • 看身份证是这家店的吗? 身份证上的店名(域名)和你现在要访问的店名(网址)对得上吗?(检查域名匹配)
    • 看盖章签名是真的吗? 用权威机构的公钥(你手机里存的)去验证证书上的签名是否有效,有没有被伪造?(验证签名)
  • 如果检查都通过: 恭喜!你确认了对方就是真正的书店,并且你拿到了书店的​公钥​(那把锁头)。这个公钥是公开的,谁都可以知道。

  • ​如果检查不通过:​​ 浏览器会弹出​大大的红色警告​!告诉你这个网站身份可疑,千万别输入密码等信息!赶紧离开!

3.​生成秘密钥匙并安全传递(生成和交换预主密钥):​​

  • 现在确认了书店身份,拿到了它的公钥(锁头)
  • ​你(浏览器)偷偷做:​​ 自己生成一个随机的、只有你自己知道的秘密数字串,叫Pre-Master Secret (预主密钥)​。这将是最终用来加密对话的​真正钥匙​的核心材料。
  • ​安全传递:​​ 你用​书店的公钥(锁头)把这个​预主密钥​锁起来(加密)​,然后把这个​锁着的盒子(加密后的预主密钥)​​发送给书店。
  • 关键点:​​ 因为只有书店有对应的​私钥(唯一能打开那把锁的钥匙)​,所以即使别人截获了这个盒子,没有书店的私钥也打不开,看不到里面的预主密钥。

4.​双方合力打造同一把“会话钥匙”(生成会话密钥):​​

  • ​书店(服务器)收到盒子:​​ 用自己​私钥打开盒子,拿到了你发来的​预主密钥

  • ​你和书店各自计算:​​ 现在,你们俩手里都有:

    • 你最初发的随机数(Client Random
    • 书店发的随机数(Server Random
    • 预主密钥(Pre-Master Secret
  • 你们俩按照之前约定好的规则(选定的加密算法),用这三个数,​各自独立地计算出一把一模一样的钥匙,这把钥匙叫 Session Key (会话密钥)​。这把钥匙是​对称密钥,意思是加密和解密都用同一把钥匙,速度很快。

5.​开始用“密语”安全聊天(加密通信):​​

  • 从现在开始,你们俩的对话(你浏览网页、输入账号密码、网站给你返回内容)​全部​都用这把 ​Session Key (会话密钥)​​ 进行加密和解密
  • 你说的话(请求)用钥匙加密后发给书店,书店用钥匙解密看懂后,回复你的话(响应)也用钥匙加密,发给你,你再解密。
  • ​外面的人(黑客)即使能截获这些加密后的数据,看起来也完全是一堆乱码,根本看不懂!​​ 他们也无法篡改,因为一旦篡改,解密出来的内容就不对了,你们就能发现。

6.​结束安全聊天(连接关闭):​​

  • 聊完了(比如你关闭了网页),这把 ​Session Key​ 通常就会被丢弃。下次你再访问时,会重新走一遍流程,生成一把新的会话密钥,安全性更高。

下面是简化版的 https 建立连接的时序图,可以结合上面的讲解一起看:

​四、关键角色和概念再强调​

  • ​数字证书:​​ 网站的“身份证”。由 ​证书颁发机构 (CA)​​ 签发,证明“这个公钥确实属于这个域名对应的网站”。浏览器信任这些权威的 CA。

  • ​公钥和私钥:​​ 这是 ​非对称加密​ 的一对钥匙。

    • ​公钥​ 是公开的,像一把锁头,发给任何人。用来​加密信息。只有对应的私钥才能解开
    • 私钥​ 是网站自己秘密保管的,像唯一能打开那把锁的钥匙。用来​解密用公钥加密的信息。​绝对不能泄露!​​
  • ​对称加密 (Session Key): 加密和解密用同一把钥匙。优点是速度快,适合加密大量数据。HTTPS 在建立连接后主要用它。

  • ​非对称加密:​​ 加密和解密用不同的钥匙​(公钥和私钥)。优点是安全,但速度慢。HTTPS 主要用它来安全地传递那个用于对称加密的 ​Session Key。这就是 ​混合加密​ 的智慧!

  • CA (证书颁发机构): 网络世界的“公安局”或“公证处”。它们负责核实网站的真实身份,然后签发数字证书。浏览器内置了信任的根 CA 列表。

总结

  1. ​为什么诞生?​​ 因为 HTTP 太不安全!信息裸奔(明文)、容易被偷看(窃听)、容易被篡改、容易被冒充(钓鱼)。
  2. ​怎么解决?​​HTTPS = HTTP + SSL/TLS
  3. ​核心原理三步走:​​
    • ​亮身份 & 验真伪:​​ 网站出示由可信 CA 签发的数字证书,浏览器严格验证。确保你访问的是真网站。
    • ​安全传钥匙:​​ 利用非对称加密(公钥加密,私钥解密),安全地把用于后续对话的“对称会话密钥”的核心材料传递给网站。确保钥匙只有你们俩知道。
    • ​高效密语聊天:​​ 双方生成相同的对称会话密钥,之后所有通信都用这把钥匙快速加密和解密。确保对话内容保密且完整。

简单说,HTTPS 就是给原本“在街上大声喊话”的网络通信,加上了“验明正身”和“进隔音包间用密语交谈”的安全措施。它让互联网上的信息传输变得私密、可信、防篡改。现在几乎所有的网站,尤其是涉及登录、支付等敏感操作的,都必须使用 HTTPS。你在浏览器地址栏看到的小锁头图标,就是 HTTPS 在保护你的标志!