Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Certificate Java v/s浏览器证书信任行为_Certificate - Fatal编程技术网

Certificate Java v/s浏览器证书信任行为

Certificate Java v/s浏览器证书信任行为,certificate,Certificate,我们有一个基于Java的应用程序,它通过https连接到少数服务器 这些服务器的自签名证书将添加到客户端信任存储中,以确保https连接正常工作 以下是所讨论的场景: 服务器具有具有公钥Pub1的自签名证书C1。此证书已添加到客户端信任存储,并且连接工作正常 在服务器C2上生成一个新的自签名证书,该服务器C2具有与C1相同的公钥。i、 e C2具有不同的序列号、指纹和验证日期,但与证书C1具有相同的公钥 虽然C2未添加到客户端信任存储中,但客户端和服务器之间的连接仍在工作 因此,X509Trus

我们有一个基于Java的应用程序,它通过https连接到少数服务器

这些服务器的自签名证书将添加到客户端信任存储中,以确保https连接正常工作

以下是所讨论的场景:

  • 服务器具有具有公钥Pub1的自签名证书C1。此证书已添加到客户端信任存储,并且连接工作正常

  • 在服务器C2上生成一个新的自签名证书,该服务器C2具有与C1相同的公钥。i、 e C2具有不同的序列号、指纹和验证日期,但与证书C1具有相同的公钥

  • 虽然C2未添加到客户端信任存储中,但客户端和服务器之间的连接仍在工作

  • 因此,X509TrustManager/X509ExtendedTrustManager checkServerTrusted实现似乎只是在进行公钥匹配

    使用浏览器测试的相同场景:

  • 当服务器的自签名证书C1未添加到浏览器证书存储时,浏览器会引发安全异常。对于Firefox(添加服务器例外)和Chrome(将自签名服务器证书添加到信任存储)

  • 浏览器现在不会引发任何安全异常

  • 如前所述,当服务器更改为具有与C1相同公钥的证书C2(添加到浏览器中)时,浏览器仍会引发安全异常


  • 因此,Java v/s浏览器信任行为实际上存在差异。

    我可能错了,但我看不出有什么问题。问题是:1)为什么Java和浏览器之间的信任行为不同。2) 可能会有争议,Java行为是正确的还是浏览器行为?我可能错了,但我看不到问题。问题是:1)为什么Java和浏览器之间的信任行为不同。2) 可能有争议,Java行为正确还是浏览器行为正确?