美文网首页
http和https的区别?

http和https的区别?

作者: 综合楼 | 来源:发表于2024-05-07 16:02 被阅读0次

    概述

    HTTPS 无非就是 HTTP + SSL/TLS
    而 SSL/TLS 的功能其实本质上是:如何协商出安全的对称加密密钥,以利用此密钥进行后续通讯的过程。

    一、HTTP 为什么不安全

    HTTP 由于是明文传输,主要存在三大风险:窃听风险、篡改风险、冒充风险

    二、SSL/TLS协议是什么

    SSL(Secure Sockets Layer)和TLS(Transport Layer Security)的关系
    就像windows XP和windows 7的关系,升级后改了个名字而已
    HTTPS=HTTP+TLS

    三、对称加密:HTTPS 的最终加密形式。

    image.png

    如图示:使用对称加密的通信双方使用同一把密钥进行加解密。

    优点:对称加密具有加解密速度快,性能高的特点
    缺点: 无法解决单向对称密钥的传输泄漏问题

    四、非对称加密:解决单向对称密钥的传输问题

    非对称加密即加解密双方使用不同的密钥,一把作为公钥,可以公开的,一把作为私钥,不能公开。
    公钥加密的密文只有私钥可以解密,私钥加密的内容(私钥签名),也只有公钥可以解密(公钥验签)

    image.png

    优点:解决单向对称密钥的传输问题
    缺点: 耗时(对称加密算法比非对称加密算法快大约1500倍)
    问题:公钥如何传输?

    五、数字证书:解决公钥传输信任问题

    1. 背景

    员工入职时,企业一般会要求提供学历证明,显然不是什么阿猫阿狗的本本都可称为学历,这个学历必须由第三方权威机构(Certificate Authority,简称 CA)即教育部颁发。
    证书由站点管理者向 CA 申请,申请的时候会提交 DNS 主机名等信息,CA 会根据这些信息生成证书。

    image.png
    2. Q&A

    Q1:如何验证证书的真实性,如何防止证书被篡改?
    A1:数字签名:私钥签名,公钥验签。

    image.png

    Q2:如何解决CA公钥被调包的风险?
    A2:实际上此公钥是存在于 CA 证书上,而此证书(也称 Root CA 证书)被操作系统信任,内置在操作系统上的,无需传输。

    Q3:charles 这些中间人为啥能抓到明文的包呢?
    A3:charles 这些中间人能抓取 HTTPS 包的前提是信任它们的 CA 证书,然后就可以通过替换证书的方式进行瞒天过海。

    五、什么是证书信任链?

    背景:

    前文说了,我们可以向 CA 申请证书,但全世界的顶级 CA(Root CA) 就那么几个,每天都有很多人要向它申请证书,它也忙不过来啊,怎么办呢?继续往下授权啊。

    一级 CA 让 Root CA 来签名认证,二级 CA 让一级 CA 来签名认证,Root CA 没有人给他签名认证,只能自己证明自己了,这个证书就叫「自签名证书」或者「根证书」(系统内置)

    举例:

    证书信任链现在我们看看如果站点申请的是二级 CA 颁发的证书,client 收到之后会如何验证这个证书呢,实际上 service 传了传给二级 CA 的证书外,还会把证书信任链也一起传给客户端,这样客户端会按如下步骤进行验证:

    1. 浏览器就使用信任的根证书(根公钥)解析证书链的根证书得到一级证书的公钥+摘要验签;
    2. 拿一级证书的公钥解密一级证书,拿到二级证书的公钥和摘要验签;
    3. 再然后拿二级证书的公钥解密 server 传过来的二级证书,得到服务器的公钥和摘要验签,验证过程就结束了。

    相关文章

      网友评论

          本文标题:http和https的区别?

          本文链接:https://www.haomeiwen.com/subject/qttdfjtx.html