HTTPS理解

仅一家之言

声明

网上关于HTTPS的讲解相当多,有些图文并茂,我也是同样学习的,这里只是记录一下自己的理解,避免以后忘记,想要学习HTTPS的还是别看了

正文

直接进入正题

  • 众所周知,HTTP是明文传输,一般的抓包都是随便抓,为了保证传输信息的安全性,我们需要对传输信息进行加密,所谓加密,一定是需要加密算法和解密算法

  • 对称加密,最简单的加密,也是最容易想到的,就是一般的数据变换,按理说这样的加密就足够了,如果加密方式就只有通信双方知道的话,但问题就是如何传输这个加密方式,因为加密方式是明文啊,如果要对加密方式进行加密,那就是死循环了,没玩没了

  • 想要对加密方式进行加密,就需要使用非对称加密,这里要说非对称加密和对称加密的区别:对称加密只有一种加密方式,即服务端和客户端都使用这种方式对明文加密,而非对称加密是有两种加密方式的,一个叫公钥,即所有客户端都可以拥有的,还有一种是私钥,只有服务端持有,这有什么好处呢,即服务端发出的信息可以被很多人知晓,但是无法被仿造,因为没有人知道私钥,而且客户端发送的信息也无法被破解,这里又有两个问题:

    • 很多客户端都知道公钥,那么如果使用非对称加密对传输加密,无法保证一对一的通信安全,所以在正文传输过程中只能用对称加密,所以我们使用非对称加密对对称加密算法进行加密传输,但其实还有对称加密耗时少得多
    • 问题来了,非对称加密算法怎么传送?又是死循环?
  • 证书

    • 为了解决上面的加密算法的传输死循环问题,我们使用第三方服务–证书颁发机构.

      • 服务端 : 一般一个大型网站提供https服务的话,会将自己公司的信息和公钥提供给这个第三方机构,这个机构认证之后,就用机构的私钥对公司发来的公钥签名,创建一个叫证书的东西,证书中是公钥和公钥签名的结果,这个公钥签名可以被公钥解密发送个服务器,当然,公司要掏钱的
      • 客户端 : 客户端安装浏览器,浏览器中内置了第三方机构的根证书,里面包含了公司提交的公钥信息,
    • 通信

      • 客户端发送通信请求,请求报文中添加了自己的客户端支持的ssl信息和加密组件
      • 服务端收到后,发回响应,响应报文中有筛选(从客户端提供的)后的ssl信息和加密组件
      • 然后服务端发送证书给客户端
      • 然后客户端使用本地的公钥对证书中的公钥签名解密,如果解密结果是证书中的公钥,就证明服务器可信,然后就可以使用服务器传来的公钥进行之后的加密传输了;
  • 证书是否解决了问题,我们的初衷是安全传输公钥,也就是说确保这个证书不会被篡改,首先,证书中的公钥签名是第三方机构的私钥加密生成的,如果篡改后发送到客户端,客户端的公钥是无法对签名解密的,就不会得到验证,连接就不会建立;

猜你喜欢

转载自blog.csdn.net/qq_36865108/article/details/88085665