美文网首页网络
HTTPS请求过程

HTTPS请求过程

作者: abboo | 来源:发表于2021-02-19 23:35 被阅读0次

数字证书里面有什么

数字证书通常还包括对象的公开密钥,以及对象和所用签名算法的描述性信息。任何人都可以创建一个数字证书,但并不是所有人都能够获得受人尊敬的签发 权,从而为证书信息担保,并用其私有密钥签发证书。

一个网站的证书是由权威机构CA颁发的,所以网站的证书包括了:

  • Web 站点的名称和主机名;
  • Web站点的公钥
  • CA的名称和CA的签名算法
  • 证书的序列号和版本号
  • 证书的有效期和其他扩展信息
  • CA用自己的私钥对上述信息的签名

CA签名过程

CA把站点的信息和证书有效时间和自己的信息使用hash算法生成一个摘要,CA用自己的私钥对这个摘要进行签名,生成的数字签名和原来的信息打包成一个证书。

hash函数如何商量的?

之前强调了证书的内容还包括证书的签名算法,这个签名算法其实就是hash函数。

HTTPS请求过程

先上图

img
  1. 浏览器请求站点的443端口,携带了TLS版本和自己本地支持的加密算法和哈希算法的密码套件,同时还发了一个随机数 Client Random,站点可以从这些密码套件选一个自己有的进行后续的加密和哈希。

  2. 服务器收到请求,确认TLS版本号,选择浏览器支持的加密和哈希的密码套件,同时也发了一个随机数Server Random给浏览器。

    这两个随机数是后续作为生成「会话密钥」的条件,所谓的会话密钥就是数据传输时,所使用的对称加密密钥。

  3. 服务器将自己站点的数字证书返回给浏览器。

  4. 浏览器验证数字证书是否合法,这一部分是浏览器内置的 TSL 完成的,而浏览器中预装了很多CA的证书。

    • 浏览器从内置的证书列表中索引,找到数字证书中的证书颁发者的公钥,如果找不到证明验证失败,服务器的证书不是由权威机构颁发的,是不可信任的。如果找到了就用这个公钥对数字签名进行解密。
    • 正常情况下,解密之后的内容其实就是证书内容然后用证书签名算法,即hash函数签名后的一段摘要,而我们只需要用同样的hash函数对明文内容进行签名,得到的摘要和解密后的内容是一致的,就证明这个证书是由CA颁发的。
    • 然后浏览器再比对站点的网址和证书中的网址是否一致;一致的话再比对证书是否过期;
    • 全都验证通过才认为这个网址是合法的,可以安全使用这个网站的公钥了。
  5. 浏览器生成一个随机数pre-master,并用服务器公钥对pre-master进行加密,因此只有服务器的私钥才可以解密。浏览器传输加密后的pre-master

  6. 服务器用私钥解密pre-master,然后用这三个随机数生成会话秘钥master secret,这个会话秘钥就是堆成加密的秘钥,使用对称加密算法对网页内容进行加密。这个加密算法是第一步就商量好的

  7. 服务器返回加密后的网页

  8. 浏览器使用同样的对称加密算法使用R对网页内容解密,渲染网页。

补充

证书加密和解密过程

对称加密AES

其实更细节的东西并未在这篇博客里详尽描述,比如SSL 和TSL的差别,以及密码套件的具体表示方式,还有证书链等等,有待自行探索。

相关文章

  • HTTPS请求过程

    数字证书里面有什么 数字证书通常还包括对象的公开密钥,以及对象和所用签名算法的描述性信息。任何人都可以创建一个数字...

  • HTTPS 请求大致过程

    发送 HTTPS 请求首先要进行 SSL/TLS 握手,握手过程大致如下: 1、客户端发起握手请求,携带随机数、支...

  • HTTPS的请求过程

    我们先看这张图,我觉得这张图已经把https协议的通信过程说的明明白白了。 整个过程分为以下几步: 1、浏览器发起...

  • iOS http & https & 网络请求过程

    三次握手图集: 看了此图, 于是乎,问题来了, 不是TCP链接的时候需要三次握手么( http://blog.cs...

  • iOS 中 HTTPS 证书验证浅析

    iOS 中 HTTPS 证书验证浅析 一、HTTPS请求过程 下面看一个普通的HTTPS请求过程: 第一阶段:Cl...

  • TCP连接和关闭过程

    TCP三次握手过程及四次挥手过程 HTTPS加密请求过程

  • android HTTPS认证

    https握手 http的握手过程: HTTPS握手过程 流程分析: 1. 客户端发起HTTPS请求 2. 服务端...

  • 再记https中的证书

    突然间有点忘了https中的交互过程了,年纪大了,总是容易忘记。。。 https握手过程 客户端发起HTTPS请求...

  • HTTPS连接过程

    SSL建立连接过程 client向server发送请求https://baidu.com[https://baid...

  • Moya,KingFisher中使用自签名证书发起HTTPS请求

    HTTPS握手 先说声https握手,发送 HTTPS 请求首先要进行 SSL/TLS 握手,握手过程大致如下: ...

网友评论

    本文标题:HTTPS请求过程

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