我对https的理解

137 阅读3分钟

我对https的理解

1. 为啥需要 https

没有https的话,数据包在管道里面传输的时候就是明文的,这样只要一抓包就能知道你的数据了。

https 比 http 传输的时候(ps:注意是传输,即数据在管道里面的时候) ,多了一层加密,这样敏感数据就不是明文了。

ps:平时我们用的浏览器F12调试模式,还是可以看到接口的明文数据的,https解决的传输过程加密,Server-Client两端数据的加密的话得业务自行实现了。

2. https加密

网络世界是一片黑森林,谁也不能相信。

https为了能在传输的时候加密,加密就需要密钥,密钥不能明文传输,否则被坏人搞走了🔑,数据就能被盗了。

加密分为对称加密与非对称加密,区别如下:

指标对称加密非对称加密
密钥数量单一密钥(共享密钥)一对密钥(公钥 + 私钥)
计算速度极快(适合大数据)慢(比对称加密慢 100-1000 倍)
资源消耗高(需复杂数学运算)
适用场景加密大量数据(如文件、通信流)加密小数据(如密钥分发、数字签名)

https在设计的时候了,是先用非对称加密交换对称加密的密钥,然后用对称加密进行数据传输。兼顾了安全与性能。

其步骤如下: image.png 这边还是会出现“公钥替换攻击”:

A---------------A公钥-------------》坏人 ----------坏人公钥----------》B

A《-------坏人私钥(A公钥加密)------坏人《----B密钥(坏人公钥加密)---- B

A用的是坏人的密钥加密传输数据,坏人就很轻松的解密数据了。

解决的方法就是再引入一层。引入了证书跟证书颁发机构(CA)。证书颁发机构(CA)是一个受信任的第三方,它负责为服务器颁发证书,并验证服务器身份的真实性。

3. 证书的工作原理

image.png

浏览器和操作系统通常会预先安装一些受信任的根证书,只有CA签发的证书才会被认为是有效的。

4. 中间人攻击与防范

因为证书是可信 CA 用自己私钥加密的,只有通过它才能解密。

如果中间件伪造证书,那么会出现非可信 CA。

因此,https协议的安全性依赖于CA的信任链和浏览器对根证书的信任。

5. https握手过程中,客户端如何验证证书的合法性?

客户端在进行HTTPS握手时,首先会从服务器获取其SSL证书。然后,客户端会使用其信任的CA根证书来验证该证书的签名是否合法。如果签名有效且证书未过期,客户端就会认为该证书合法,进而获取服务器的公钥用于加密后续的通信。

如果证书无效或者无法验证签名,客户端会中断连接并发出警告。这一过程的安全性主要依赖于证书的签名和CA的公钥链。