为什么在固定无效的中间证书但有效的叶服务器证书时 tls 证书验证失败? 证书验证通过并成功建立连接时:在以下情况下验证并因此连接失败:根据以上行为,我得出以下结论:我如何在以下情况下再次进行连接失败的测试:好像是:

问题描述

这是我测试过的场景和内容:

我正在移动应用程序(flutter 应用程序)中进行证书固定,以固定我们后端域的证书。

证书验证通过并成功建立连接时:

  1. 我同时固定了有效叶证书和中间证书。
  2. 我只固定有效的叶子证书
  3. 我只固定有效的中间证书
  4. 我固定无效的叶子证书但有效的中间证书

在以下情况下验证并因此连接失败:

  1. 我只固定无效的叶证书。
  2. 我只固定无效的中间证书。
  3. 我固定无效的叶证书和无效的中间证书。

根据以上行为,我得出以下结论:

  • 每当服务器发送其叶证书时,首先会检查它是否存在于固定证书集中。如果没有固定这个确切的叶证书,那么这个叶证书就不会被验证,因此它会查看谁签署了这个证书,从而为它提供了中间证书。
  • 它再次检查此中间证书是否在固定证书集中。如果我们固定了相同的中间证书,那么它被认为是经过验证的,并且由于服务器证书是由经过验证的中间证书颁发的,因此连接将成功。
  • 因此,同时固定同一域的中间证书和叶证书(任何父证书和后代证书)是没有意义的,因为即使所有后代证书都未通过验证,也会考虑链中最顶端的证书。

我如何在以下情况下再次进行连接失败的测试:

  • 我固定有效的叶子证书,但无效(不同的)中间证书。

  • 所以我之前的结论是,首先检查叶证书似乎是错误的,或者我在这里遗漏了一些东西。

好像是:

  • 在固定证书集中检查链中的证书,从链中最顶部的证书到最底部(从根证书到叶子证书)
注意:我固定无效中间证书的方法是更改​​证书中的一或两个字符(以 PEM 格式)。

我的结论正确吗?我在这里错过了什么?是否从叶子检查证书,并且只有在验证失败时,它才会转向查看链上的其他证书?或者完全是别的什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...