1

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

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

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

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

验证并因此连接失败时:

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

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

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

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

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

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

这好像是 :

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

我的结论正确吗?我在这里想念什么?是否从叶子检查证书,并且只有在验证失败时,它才会查看链上的其他证书?还是完全是别的东西?

4

0 回答 0