• 【计算机网络】HTTPS的基础知识



    引言:

    在上篇文章中一文带你了解HTTP协议,我们一起学习了HTTP协议的相关知识,下面让我们再一起来学习下HTTPS的有关知识吧😊😊😊

    HTTPS

    HTTPS 相当于 HTTP 的孪生兄弟,HTTPS 在 HTTP 的基础上,引入了一个加密层,HTTP 协议内容都是按照文本的方式明文传输的, 这就导致在传输过程中出现一些被篡改的情况。

    这就不得不提到臭名昭著的运营商劫持:比如要下载一个 天天动听,未被劫持的效果是点击下载按钮,就会弹出天天动听的下载链接;然而如果是被劫持的效果,那么点击下载按钮,就会弹出其他软件的下载链接。

    在这里插入图片描述
    之前的HTTP 是明文传输的,传输的数据是容易被获取的,也是容易被篡改的,从而引入了HTTPS ,对数据进行了加密,也就能更好的保护数据安全了。
    加密: 就是把明文(要传输的信息)进行一系列变换,生成密文
    解密: 就是把密文再进行一系列变换, 还原成明文
    在这个加密和解密的过程中,往往需要一个或者多个中间的数据,辅助进行这个过程, 这样的数据称为 密钥

    HTTPS的工作过程

    既然要保证数据安全,就需要进行 “加密”(HTTPS中引入的加密层,称为SSL(旧的叫法)/TLS(新的叫法));
    网络传输中不再直接传输明文了, 而是加密之后的 “密文”;
    加密的方式有很多, 但是整体可以分成两大类:对称加密非对称加密

    引入对称加密

    对称加密: 使用同一个密钥,既可以进行加密,也可以进行解密
    在这里插入图片描述
    上述的过程看起来是挺美好的,但是存在一个致命缺陷,就是如何保证客户端和服务器持有同一个密钥呢❓🤔 尤其是一个服务器,对应有很多客户端的时候
    在这里插入图片描述
    在这里插入图片描述

    经过上述探讨,就明确了,使用对称加密最大的问题就是在于说,密钥能够传递过去,如果是明文传输是不行的,我们必须得针对这个密钥在进行加密

    所以这里就需要引入非对称加密

    引入非对称加密

    非对称加密: 有两个密钥,分别叫做公钥私钥
    公钥: 就是人人都能够获取到;
    私钥: 就是只有自己才知道。
    我们就可以使用公钥来加密,使用私钥来解密;或者是使用私钥来加密,使用公钥解密。

    直观上理解公钥和私钥:

    就像是很多小区单元门口的"信箱",你有一把钥匙和很多把锁头,你把这些锁头(公钥)发给送信小哥,每一个送信的小哥都可以凭借这些锁头,把信锁到你的信箱里,只有你自己持有这把钥匙(私钥)能够开箱,拿出信。

    基于非对称加密,就可以让服务器生成一对公钥私钥,公钥发出去(人人都能拿到),私钥自己保存
    客户端生成一个对称密钥,客户端就可以使用服务器的公钥,对 对称密钥进行加密,然后把数据传给服务器,服务器在用私钥解密。
    在这里插入图片描述
    上诉过程也是看起来好像很完美,其实里面还是有漏洞的,那就是服务器要把自己的公钥返回给客户端,在这个操作当中,就可能会涉及到一个非常经典的"中间人攻击"。
    中间人攻击
    在这里插入图片描述
    上面这是正常情况下,黑客没搞事情的情况下
    在这里插入图片描述
    既然存在了中间人攻击,那么如何解决这个问题呢❓🤔

    关键就是,得让客户端知道当前的公钥是否真的是来自于服务器的,而不是黑客伪造的。

    想想看,生活中其他场景是怎么验证的❓❓❓
    例如:你去网吧,或者去住小旅馆,需要进行身份登记,那么如何验证你的身份呢?你要有身份证,网管就会拿着你的身份证刷一下,这一刷,其实就是在访问公安局的相关服务器,验证你的身份信息。
    因此,就需要引入了一个第三方机构,来证明这个公钥是一个合法的公钥,因为咱们是信任这个公信机构的(就像咱们信任警察叔叔一样),公信机构说这个公钥ok,那我们就可以认为这个公钥可信。

    引入证书

    在这里插入图片描述
    在这里插入图片描述

    总结

    HTTPS 在 HTTP 基础上引入了加密层,基于SSL/TLS来进行加密的
    对称加密: 用来加密业务数据
    非对称加密: 用来加密对称密钥
    引入证书: 引入第三方公信机构
    然后这整个加密过程,与其说是去防止数据被拦截,不如说更重要是防止数据被篡改
    既然HTTP 数据已经经过加密了,为啥 fiddler 仍然能抓住并解析 HTTPS 里的数据报❓🤔
    之所以 fiddler 可以抓包,是我们在最开始时安装fiddler 时说过,第一次启用HTTPS功能的时候,弹出的那个对话框是密切相关的,我们一定要点 “是”

    这里的点 “是” 操作,其实就是让操作系统能够信任 fiddler 提供的证书,相当于就是给 fiddler 授权,允许fiddler 进行 “中间人攻击”

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    算法对树进行广度优先算法
    Hyperf crontab 定时任务组件
    网工配置命令总结(1)---Web访问及vlan配置
    jdk的bin目录下的工具
    PyQt5中的layout布局
    开启企业内容管理数字之旅的 12 个技巧
    Rust 解决循环引用
    c++初阶--内存管理
    Error: A JNI error has occurred, please check your installation and try again解决
    elasticsearch11-实战搜索和分页
  • 原文地址:https://blog.csdn.net/m0_46468731/article/details/124902339