我面临一个奇怪的问题:
- 我有一个使用 Box API 的代码(适用于不同的客户和不同的盒子帐户),此代码适用于我们的所有客户,期望一个客户并且几乎适用于他的所有盒子帐户(剂量),除了他的 3 个帐户。我对他们说“无法找到请求目标的有效证书路径”- SSL 错误。
- 当我在这些有问题的帐户上执行我们的代码作为独立进程时,一切正常。
- 当使用作为多线程进程的一部分执行的这些帐户(即使是其中一个帐户)时(线程之间没有 SSL Socket 共享,线程之间没有共享资源,每个线程可以执行不同的工作,并且可能根本无法与 Box 一起使用(甚至同一客户或其他客户的其他帐户在同一个多线程进程中也能正常工作),但使用其他 HTTPS 服务器(如 Sharepoint 或 Google))然后我从 Box API 收到这个奇怪的错误,上面写着: “PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径”
所以,这个问题让我抓狂。独立执行工作正常(在多线程执行引发该错误的同一台机器上,SSL Socket 再次不在线程之间共享)。所以,我的问题是,如果验证证书失败(虽然 cacerts 是有效的,因为独立执行工作正常,甚至同一客户或其他客户的其他帐户也可以正常工作)多线程进程)。
更新:似乎在文件下载期间我们被重定向到 zone-traffic-manager00025.eu-west-2.aws.prod.box.net。在浏览器中访问时,证书中的主机名似乎没有多少 CN,这是 *.box.com 的通配符。但无论如何浏览器说这是一个无效的名称。在 Java 中的 SunCertPathBuilderException 异常中,我们在 AdjacencyList 中看到证书验证的下一个链以某种方式损坏:
- 证书中的 cn:zones-traffic-manager00025.eu-west-2.aws.prod.box.net颁发者:cn=production web services authority
- cn=生产网络服务授权cn =生产中间授权
- cn=production颁发的中间权限cn=production root authority 并且cn=production root authority 未验证。
请指教 谢谢
谢谢 !!!