客户端和服务端打招呼,并且把自己支持的TLS版本,加密套件,第1随机数发给服务端服务端打招呼,确认支持的TLS版本以及选择的加密套件,同时也生成一个第2随机数发给客户端,接着服务端还把证书和公钥发送给客户端,发送完毕客户端生成第3随机数,预主密钥(用刚刚收到的公钥进行加密后再发送出去)服务端收到加密后的预主密钥以后,用自己的私钥进行解密,这样服务器就知道预主密钥,而且只有客户端和 - 实践
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)颁发的电子文件,就像公安局给你发的身份证。
里面有什么:
持有者的信息:网站域名、公司名称等。
持有者的公钥。(这是核心!)
颁发者(CA)的信息。
CA 对以上所有信息进行的数字签名。
它如何工作(验证过程):
当你的浏览器(客户端)连接到网站时,网站会把自己的证书发给你。
你的浏览器内置了所有受信任的 CA 的根证书(具备它们的公钥)。
浏览器用 CA 的公钥去验证证书上的数字签名。如果验证通过,说明:
这个证书是真的,是由可信的 CA 颁发的。
证书内容(包括网站域名和公钥)在传输过程中没有被篡改。
这样,浏览器就确信:“嗯,这个公钥确实是
www.google.com的,我可以放心用它来通信了。”
核心作用:数字证书解决了“公钥信任”问题,防止了“中间人攻击”(黑客冒充网站与你通信)。
四、巅峰合作:TLS 握手过程
这是所有科技融合在一起的地方,也是最精彩的部分。TLS 握手的目标是:
验证服务器身份(通过证书)。
协商出后续通信启用的对称加密密钥(称为“会话密钥”)。
这个过程非常精妙,下图清晰地展示了其核心步骤与逻辑:
下面我们来详细拆解图中的每一步:
第一步: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 (客户端响应)
这是最关键的一步!客户端:
验证服务器的证书(如前文所述)。如果验证失败,会弹出警告。
生成第三个随机数,叫做“预主密钥”。
使用证书里的服务器公钥,将这个 “预主密钥”加密,之后发送给服务器。
注意:此时,只有拥有对应私钥的服务器才能解密该预主密钥。黑客即使截获了,也解不开。
第六步:生成会话密钥
现在,客户端和服务器都拥有了三个相同的元素:客户端随机数、服务器随机数和预主密钥。它们双方会启用相同的算法,根据这三个元素,独立地计算出一个相同的“主密钥”,接着派生出相同的“会话密钥”。
从此,双方拥有了一个只有他们俩知道的、安全的对称加密密钥!
第七步:切换密码与结束握手
双方互相发送一条消息,说:“之后我们就用刚才商量好的会话密钥来加密通信了”,并且用会话密钥加密一条验证消息,确保之前的握手过程没有被篡改。
握手完成!
总结与回顾
让我们把所有知识点串联起来:
目标:建立安全的 HTTPS 连接。
工具:
对称加密:快,用于加密主要数据。
非对称加密:慢,但能安全地分发密钥。
数字证书:确保你拿到的公钥是真的,防止被骗。
过程(TLS握手):
通过 非对称加密 和 证书验证,安全地交换了一个“预主密钥”。
双方利用三个随机数,生成同一个“会话密钥”。
结果:
后续所有的应用数据(你浏览的网页、输入的密码),都使用对称加密和这个会话密钥进行迅速、安全的传输。
这套精妙的机制,完美地结合了非对称加密的安全性和对称加密的高效率,构成了现代互联网安全的基石。

浙公网安备 33010602011771号