背景知识

▧▧ 理解 https 前需要了解的前置知识

加密技术



数字签名

相当于指纹,一种用于确保数字信息完整性、认证身份和防止否认的技术手段。如:根据散列函数对消息体生成一个 256 位的摘要 A(如 HS256),然后使用私钥对该摘要进行加密生成数字签名。用户收到消息后用公钥解密得到摘要 A,然后根据同样散列函数对消息体生成一个摘要 B,通过对比两个摘要,确认消息体是否被篡改。

.▧▧ 引用下 pity 里的一个函数,这里使用 JWT 提供了一种轻量级的方式来实现数字签名的功能,用于确保 token 的完整性和真实性,本质和数字签名的思想类似,但是 JWT 用的是对称密钥。

数字签名这里虽然可以防止消息是否被篡改,但是有个关键点,就是无法保证公钥是否被替换过或者公钥是否属于当前请求的服务器



数字证书

▧▧ 类似身份证是由公安机关签发的一样,主要作用是用于验证网络通信中的身份和信息的真实性。数字证书最核心的作用就是第三方权威机构证明这个公钥持有者是属于谁的



http 的缺陷

▧▧ http 是明文传输协议,数据传输过程中是以纯文本的形式进行传输。这里的明文指的是未经过加密的数据,这些未经过加密的 http 报文(请求行、请求头、主体)在网络上传输的过程,使得其内容容易被窃听者截取和读取。



SSL 和 TLS

▧▧ 背景: SSL 最初由网景公司 (Netscape) 开发,用于保护网络通信中的隐私、身份验证和数据完整性。SSL 的安全性存在一些漏洞和弱点,经过多次迭代增强安全性,在 1999 年更新为 TLS。由于 SSL 的最终版本(3.0)与 TLS 的第一版本之间并无明显差异,且这两个术语经常互换使用并混为一谈,现在仍然有人使用 SSL 来指代 TLS,或者使用术语 “SSL/TLS ”,所以 SSL 证书(技术上也称为 “TLS 证书”)。



信息安全

▧▧ 信息安全的基本要素:保密性、完整性、可用性、可控性、不可否认性。很明显 http 协议不具有信息安全的要素特征,因此使用 http + ssl 来保证 http 协议传输的安全性,http 是第一个使用 SSL 保证安全性的应用层协议



https

给 pity 加下证书,

用 postman 发起登录请求,用 wireshark 抓包

在进行 HTTPS 请求时,客户端会在 SSL/TLS 握手过程中获取服务器的公钥和数字证书。SSL/TSL 是一种用于保护通信安全的协议,它在建立安全连接时使用了公钥加密技术。TLS 握手包括以下步骤:

1.客户端发送 ClientHello 消息:客户端向服务器发送一个包含支持的 TLS 版本、加密算法和其他相关信息的 ClientHello 消息。

2.服务器发送 ServerHello 消息:服务器从客户端的支持列表中选择一个 TLS 版本、加密算法等,并将其作为 ServerHello 消息的一部分发送回客户端。

3.服务器发送数字证书:服务器会将其数字证书发送给客户端。数字证书中包含了服务器的公钥以及其他身份验证信息,比如服务器的域名等。

4.验证数字证书:客户端会验证服务器发送的数字证书,确保其合法性。这个过程包括检查数字证书的签发者、有效期、域名等信息,并验证证书链的完整性。

5.生成对称密钥:客户端会生成一个对称密钥,并使用服务器的公钥加密后发送给服务器,以便服务器之后能够使用私钥解密。

6.握手完成:TLS 握手完成后,客户端和服务器就可以使用对称密钥进行加密通信了。



为什么代理工具能抓到包



Https 在建立 Socket 连接之前,需要进行 SSL/TSL 握手,这里的握手分为单向和双向,后面有缘再进行补充了
另外这里的 markdown 真的难用,上下文直接的分隔间距太短了,编排也贼难受


↙↙↙阅读原文可查看相关链接,并与作者交流