两分钟带你读懂https的原理

ps:看懂本文你需要知道:简单的加解密知识

一、https是什么?

  • https=http(用于发送请求)+ssl(用于加密),简单来说https就是加密的http

二、客户端向服务器发送https请求的过程?

  1. 客户端发送请求
  2. 服务器将服务器公钥+证书返回给客户端
  3. 客户端对服务器的证书进行验证,并拿到服务器的公钥
    然后,客户端定义一个对称密钥,并使用服务器的公钥对其进行加密,发送给服务器
  4. 服务器端用自己的私钥进行解密得到对称密钥
  5. 客户端和服务器使用这个对称密钥来通信

三、深入理解https的请求过程?

  1. 客户端发送请求:
  2. 服务器将包含服务器公钥+数字证书发送给客户端:
    当服务器接收到客户端发来的请求时,会向客户端发送服务器自己的公钥,但是黑客有可能中途篡改公钥,将其改成黑客自己的,所以有个问题,客户端怎么信赖这个公钥是自己想要访问的服务器的公钥而不是黑客的呢?这时候就需要用到数字证书(详见本文第四部分)。
  3. 客户端对服务器的证书进行验证,并拿到服务器的公钥;
    然后,客户端定义一个对称密钥,并使用服务器的公钥对其进行加密,并将加密后的信息发送给服务器 ;
  4. 服务器端用自己的私钥进行解密得到对称密钥
  5. 客户端和服务器使用对称密钥进行通信

四、数字证书

  1. 要想让客户端信赖服务器的公钥没有被劫持,公钥要找一个权威机构:证书认证中心(CertificateAuthority),简称CA。 也就是说CA是专门对公钥进行认证的, 这些CA都是全球都认可的,国内知名的CA有WoSign。
  2. 那CA怎么对公钥做担保认证呢?
  • CA会用CA自己的私钥对服务器要进行认证的公钥进行非对称加密,加密完之后,得到的密文再加上证书的过期时间、颁发者、颁发给谁等信息,就组成了数字证书。
  • 不论什么平台,设备的操作系统中都会内置100多个全球公认的CA,说具体点就是设备中(浏览器)存储了这些知名CA的公钥。
  • 当客户端接收到服务器的数字证书的时候,会进行如下验证:
    首先客户端会用设备中内置的CA的公钥尝试解密数字证书,解密失败,客户端就无法信任该服务器的数字证书。解密成功,然后还要检查客户端当前访问的服务器的域名是与数字证书中提供的“颁发给谁”这一项吻合、数字证书是否过期等信息。全部核实完毕就可以说明数字证书是值得信任的。

猜你喜欢

转载自blog.csdn.net/peanutwzk/article/details/105418301