https

ssl/tls都是加密安全协议

对称加密:发送方和接收方用同样的规则来为数据进行加密,也可以说用同样的钥匙来解开密文

非对称加密核心:用两个密钥来进行加密和解密,公开密钥是所有人都知道的密钥,私有密钥仅仅是持有方才有的密钥,一般来说,私钥就放在服务器里,数据经过公钥加密就只能被私有解密,数据经过私钥加密就只能别公钥解密。服务端自己拥有成对的私钥和公钥,然后公布自己的公钥让客户端知道,客户端用公钥把自己的数据进行加密,加密后无法用公钥解密这份数据,一定要用服务端的私钥才能解密

tls对称和非对称加密都有用上

证书:证明是什么网站。ssl证书:就是保持再源服务器的数据文件,要让ssl证书生效就需要向CA(证书授权中心)申请

握手总结

客户端和服务端打招呼,并且把自己支持的TLS版本,加密套件,第1随机数发给服务端

服务端打招呼,确认支持的TLS版本以及选择的加密套件,同时也生成一个第2随机数发给客户端,接着服务端还把证书和公钥发送给客户端,发送完毕

客户端生成第3随机数,预主密钥(用刚刚收到的公钥进行加密后再发送出去)

服务端收到加密后的预主密钥以后,用自己的私钥进行解密,这样服务器就知道预主密钥,而且只有客户端和服务端知道这预主密钥

最后客户端,用预主密钥,第1随机数,第2随机数计算出会话密钥

服务端也用预主密钥,第1随机数,第2随机数计算出会话密钥

(前面的步骤都是非对称加密(消耗资源大),为了得到这个会话密钥)

后面的会话只使用这个会话密钥(只应用在当前对话)对数据进行加密,即后面使用的是对称加密

一、核心思想:为什么要 HTTPS?

想象一下,你在网上寄送明信片。

  • HTTP: 就像寄送一张明信片 。所有内容(你的地址、收件人地址、悄悄话)都写在表面上,任何一个经手的邮递员或分拣员都可以看得一清二楚。这就是 HTTP,它是明文传输的,非常不安全。

  • HTTPS: 就像寄送一个上了锁的保险箱 。只有你和收件人有唯一的钥匙。即使中途被人截获,他们也打不开保险箱,看不到里面的内容。这就是 HTTPS 的目标:保密性完整性

所以,HTTPS 的核心目的就是:在不可靠的互联网上,建立一个安全的通信通道。


二、基石:加密技术

要打造这个"保险箱",我们需要加密技术。它分为两大类:

1. 对称加密
  • 概念: 加密和解密使用同一把钥匙。

  • 比喻: 就像你家的门锁,你用钥匙锁门,家人也用同一把钥匙开门。

  • 优点: 速度快,适合加密大量数据。

  • 缺点: 密钥分发困难。如何安全地把这把"钥匙"交给对方?如果在网上直接发送密钥,密钥本身就可能被窃听。

  • 常见算法: AES, DES, 3DES。

2. 非对称加密
  • 概念: 加密和解密使用一对钥匙:"公钥"和"私钥"。

    • 公钥: 可以公开给任何人。用它来加密数据。

    • 私钥: 必须严格保密,只有自己持有。用它来解密被公钥加密过的数据。

  • 比喻: 就像一个特制的信箱。

    • 投递口是公钥,人人都可以往里面塞信(加密)。

    • 信箱主人的钥匙是私钥,只有他能打开信箱看信(解密)。

  • 优点: 解决了密钥分发问题。公钥可以随便发,不怕被偷看。

  • 缺点: 速度非常慢,比对称加密慢几个数量级,不适合加密大量数据。

  • 常见算法: RSA, ECC。


三、桥梁:SSL/TLS 与证书

现在我们有两种工具:快的但分钥匙麻烦的对称加密 ,和慢的但分钥匙方便的非对称加密。SSL/TLS 协议就是那个聪明的建筑师,它把两者结合起来,取长补短。

  • SSL: 安全套接层,是老版本。

  • TLS: 传输层安全,是 SSL 的升级版。现在普遍使用的是 TLS。

  • 关系: 你可以认为它们是同一个东西的不同版本,就像 Windows 10 和 Windows 11。我们通常说 SSL,但实际指的是 TLS。

那么,如何确保你拿到的公钥就是你要访问的网站的公钥,而不是黑客伪造的呢?

这就引出了 数字证书

数字证书:网站的"网络身份证"
  • 它是什么: 一个由受信任的第三方机构(证书颁发机构,CA)颁发的电子文件,就像公安局给你发的身份证。

  • 里面有什么:

    1. 持有者的信息: 网站域名、公司名称等。

    2. 持有者的公钥。(这是核心!)

    3. 颁发者(CA)的信息。

    4. CA 对以上所有信息进行的数字签名。

  • 它如何工作(验证过程):

    1. 当你的浏览器(客户端)连接到网站时,网站会把自己的证书发给你。

    2. 你的浏览器内置了所有受信任的 CA 的根证书(包含它们的公钥)。

    3. 浏览器用 CA 的公钥去验证 证书上的数字签名。如果验证通过,说明:

      • 这个证书是真的,是由可信的 CA 颁发的。

      • 证书内容(包括网站域名和公钥)在传输过程中没有被篡改。

    4. 这样,浏览器就确信:"嗯,这个公钥确实是 www.google.com 的,我可以放心用它来通信了。"

核心作用: 数字证书解决了 "公钥信任" 问题,防止了"中间人攻击"(黑客冒充网站与你通信)。


四、巅峰合作:TLS 握手过程

这是所有技术融合在一起的地方,也是最精彩的部分。TLS 握手的目标是:

  1. 验证服务器身份(通过证书)。

  2. 协商出后续通信使用的对称加密密钥(称为"会话密钥")。

这个过程非常精妙,下图清晰地展示了其核心步骤与逻辑:

下面我们来详细拆解图中的每一步:

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

客户端(比如你的浏览器)向服务器发送一个"招呼",内容包括:

  • 支持的 TLS 版本: 比如 TLS 1.2。

  • 支持的密码套件列表: 这是一个组合包,里面列出了它支持的对称加密、非对称加密、哈希算法等。例如 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

  • 一个客户端随机数: 这是后续生成会话密钥的原料之一。

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

服务器回复客户端的"招呼",内容包括:

  • 确认的 TLS 版本和密码套件: 服务器从客户端提供的列表中,选择一个双方都支持的版本和套件。

  • 一个服务器随机数: 这也是后续生成会话密钥的原料之一。

第三步:Certificate (服务器发送证书)

服务器将自己的数字证书 发送给客户端。证书中包含了服务器的公钥

第四步:Server Key Exchange / Server Hello Done

如果选择的密码套件需要(例如基于迪菲-赫尔曼的密钥交换),服务器会发送额外的参数(如 DH 的公开值)。最后发送 Server Hello Done 表示打招呼阶段结束。

第五步:Client Key Exchange (客户端响应)

这是最关键的一步!客户端:

  1. 验证服务器的证书(如前文所述)。如果验证失败,会弹出警告。

  2. 生成第三个随机数,叫做 "预主密钥"

  3. 使用证书里的服务器公钥 ,将这个 "预主密钥"加密,然后发送给服务器。

注意: 此时,只有拥有对应私钥的服务器才能解密这个预主密钥。黑客即使截获了,也解不开。

第六步:生成会话密钥

现在,客户端和服务器都拥有了三个相同的元素:客户端随机数服务器随机数预主密钥 。它们双方会使用相同的算法,根据这三个元素,独立地计算出一个相同的 "主密钥" ,然后派生出相同的 "会话密钥"

从此,双方拥有了一个只有他们俩知道的、安全的对称加密密钥!

第七步:切换密码与结束握手

双方互相发送一条消息,说:"之后我们就用刚才商量好的会话密钥来加密通信了",并且用会话密钥加密一条验证消息,确保之前的握手过程没有被篡改。

握手完成!


总结与回顾

让我们把所有知识点串联起来:

  1. 目标: 建立安全的 HTTPS 连接。

  2. 工具:

    • 对称加密: 快,用于加密主要数据。

    • 非对称加密: 慢,但能安全地分发密钥。

    • 数字证书: 确保你拿到的公钥是真的,防止被骗。

  3. 过程(TLS握手):

    • 通过 非对称加密证书验证 ,安全地交换了一个 "预主密钥"

    • 双方利用三个随机数,生成同一个 "会话密钥"

  4. 结果:

    • 后续所有的应用数据(你浏览的网页、输入的密码),都使用对称加密 和这个会话密钥进行快速、安全的传输。

这套精妙的机制,完美地结合了非对称加密的安全性和对称加密的高效率,构成了现代互联网安全的基石。

相关推荐
interception8 小时前
爬虫逆向:websocket实战案例,全国建筑市场
爬虫·websocket·网络协议
i_am_a_div_日积月累_8 小时前
websocket设置和断开机制
网络·websocket·网络协议
Jennifer33K9 小时前
WebSocket!!
网络·websocket·网络协议
AuroraDPY12 小时前
计算机网络:HTTP协议
网络协议·计算机网络·http
小马_66612 小时前
[好记性不如烂笔头]RT_Thread http ota升级踩坑笔记(CRC校验不通过)
笔记·物联网·网络协议·http
心一信息12 小时前
http与https的详细介绍
网络协议·http·https
r***869812 小时前
Nginx中$http_host、$host、$proxy_host的区别
运维·nginx·http
拾忆,想起13 小时前
Dubbo服务上线无法调用?一站式排查指南来了
服务器·网络·网络协议·tcp/ip·dubbo
想不明白的过度思考者15 小时前
Cookie与Session深度解析:原理、区别
网络·http·客户端·cookie·session·服务端