https的原理

好的,这是一个非常重要且经典的问题。HTTPS 的原理可以概括为:在 HTTP 和 TCP 之间加入了一个安全层(SSL/TLS),通过加密、认证和完整性校验来保证通信安全。

下面我通过一个生动的比喻和详细的步骤来解释。


一个简单的比喻:寄送机密信件

想象一下,你想给朋友寄一封机密信件:

  1. HTTP(不安全):就像寄一张明信片。任何人(邮递员、分拣员)都能看到上面的内容。

  2. HTTPS(安全):就像你把信件锁在一个特制的保险箱里寄送。

    • 非对称加密(建立信任) :你朋友先把一个打开的、只有他的私钥才能锁上的锁(公钥)寄给你。你拿到后,把通信的密钥(对称密钥)放进箱子,用这个锁锁上。现在,只有你朋友能用他的私钥打开箱子拿到密钥。

    • 对称加密(高效通信):之后,你们俩都用这个密钥来给箱子上锁和开锁,既安全又快速。

这个"建立信任并交换密钥"的过程,就是 TLS 握手


HTTPS 的核心工作原理(TLS 握手详解)

下图直观地展示了 TLS 握手过程中,客户端与服务器如何通过四个关键步骤建立安全连接:

下面我们来详细解读图中的每一个步骤:

第一步:Client Hello(客户端打招呼)

客户端(通常是浏览器)向服务器发起连接,并发送:

  • 客户端随机数: 一个随机字符串,用于后续生成密钥。

  • 支持的密码套件列表: 客户端支持哪些加密算法和组合。

  • 支持的TLS版本: 如 TLS 1.2, TLS 1.3。

第二步:Server Hello(服务器回应)

服务器收到信息后,选择一套双方都支持的加密套件,并返回:

  • 服务器随机数: 另一个随机字符串,用于后续生成密钥。

  • 服务器的数字证书 : 这是关键!里面包含了服务器的公钥 ,并由一个可信的证书颁发机构(CA) digitally signed。

  • 确定的密码套件: 告诉客户端我们使用哪一套来通信。

第三步:证书验证与预主密钥生成(客户端验证)

这是最关键的一步,客户端需要验证服务器的身份:

  1. 证书验证: 浏览器使用内置的CA公钥去解密证书的数字签名,验证证书是否由可信CA签发、域名是否匹配、证书是否在有效期内。

  2. 生成预主密钥 : 验证通过后,客户端会生成第三个随机数,称为 "预主密钥"

  3. 加密预主密钥 : 客户端使用服务器的公钥加密这个"预主密钥",然后发送给服务器。

关键点 :因为只有拥有对应私钥的服务器才能解密这个信息,所以这一步既交换了密钥,又验证了服务器身份。

第四步:生成会话密钥(双方计算)

现在,客户端和服务器都拥有了三个随机数:客户端随机数服务器随机数预主密钥

双方使用相同的算法,根据这三个随机数独立地计算出一个相同的 "主密钥" ,后续所有的对称加密通信都将使用这个主密钥派生出的会话密钥

第五步:安全加密通信

至此,握手完成。客户端和服务器都持有了相同的对称会话密钥 。接下来的所有HTTP请求和响应数据都会用这个密钥进行对称加密和解密


为什么混合使用对称和非对称加密?

  • 非对称加密(RSA, ECC) :安全性高,但计算复杂,速度慢。只用于最开始的握手阶段,交换对称密钥和身份认证。

  • 对称加密(AES, ChaCha20)计算简单,速度快。适合用于建立连接后的大量数据加密。

HTTPS 巧妙地结合了两者的优点:用非对称加密的安全 来交换对称加密的密钥 ,再用对称加密的高效来进行日常通信。


总结:HTTPS 如何保证安全?

  1. 加密(Confidentiality)

    • 通过混合加密机制,防止通信内容被窃听。即使数据被截获,没有密钥也无法解密。
  2. 认证(Authentication)

    • 通过数字证书验证服务器的身份,防止你访问到假冒的网站(比如钓鱼网站)。
  3. 完整性(Integrity)

    • 使用摘要算法(如HMAC)为数据生成一个"指纹",接收方会校验这个指纹。如果数据在传输中被篡改,校验就会失败,从而发现数据不完整。

所以,当你看到浏览器地址栏出现一把小锁(🔒)和 https:// 时,就意味着你的连接是经过上述复杂而精妙的过程保护的。

相关推荐
白狐_7981 天前
【计网全栈通关】第 7 篇:传输层核心——TCP 连接管理、可靠传输与流量控制
网络·网络协议·tcp/ip
小李独爱秋1 天前
计算机网络经典问题透视:数据流的平均速率,峰值速率和突发长度各表达什么意思?
网络·网络协议·计算机网络·安全·信息与通信
蜂蜜黄油呀土豆1 天前
深入理解计算机网络中的应用层知识
计算机网络·http·tcp·网络通信·dns
YYYing.1 天前
【计算机网络 | 第九篇】计网之传输层(三)—— TCP的拥塞控制与连接管理
网络·网络协议·tcp/ip·计算机网络
ZePingPingZe1 天前
深入理解网络模型之Spring Cloud微服务通信、Socket、HTTP与RPC
网络协议·spring cloud·rpc·dubbo
凯子坚持 c1 天前
C++大模型SDK开发实录(二):DeepSeek模型接入、HTTP通信实现与GTest单元测试
c++·http·单元测试
门思科技1 天前
ThinkLink 基于 RPC 的 LoRaWAN 告警通知机制
网络·网络协议·rpc
填满你的记忆1 天前
【计算机网络·基础篇】TCP 的“三次握手”与“四次挥手”:后端面试的“生死线”
java·网络·网络协议·tcp/ip·计算机网络·面试
2501_915106321 天前
Android和IOS 移动应用App图标生成与使用 Assets.car生成
android·ios·小程序·https·uni-app·iphone·webview
猫头虎1 天前
如何把家里 NAS 挂载到公司电脑当“本地盘”用?(Windows & Mac 通过SMB协议挂载NAS硬盘教程,节点小宝异地组网版)
windows·网络协议·计算机网络·macos·缓存·人机交互·信息与通信