突然“无法找到请求目标的有效认证路径”

问题描述 投票:0回答:2

我有一个java应用程序,直到最近一直运行良好。 它开始引发异常:

javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

我有这个应用程序的几个版本。对于编译和运行:有些使用我路径上的 Java 8,有些使用对我拥有的 Java 11 的特定引用,有些使用嵌入式 Red Hat Java 11...每个都使用 PKCS12 密钥库的副本。所以,我们假设这个文件没有损坏。

  • 所有突然停止工作,出现上述异常!

  • 更令人沮丧的是,在同一台机器上模拟失败的 API 调用,使用 Postman 就可以通过了!

  • 如果重要的话,java应用程序使用PKCS12密钥库,它是由keytool从crt+key文件(Postman正在使用的文件)生成的

有什么想法吗?我确实有一个 Java 更新,我更新了(现在是 1.8.0_261)并重新启动 - 仍然是同样的问题...

更新:管理员与我共享了新旧服务器证书(不确定他们是否可以这样做?)。我能够看到一些细微的变化。发行人看起来特别有趣:
旧:DigiCert SHA2 安全服务器 CA、DigiCert Inc
新:DigiCert TLS RSA SHA256 2020 CA1,DigiCert Inc
我猜这是 Java 不信任新发行者的情况?我可以通过编辑我的 cacerts 文件来解决这个问题吗?
希望对此有所了解。所以,我有一些理解的感觉,请:)

java certificate ssl-certificate keystore truststore
2个回答
2
投票

当然,从 DigiCertPEMDER 格式下载新的中间证书,并将其作为受信任的 CA 导入到 CA 存储中。

之后,情况应该得到修复。


0
投票

我今天遇到了同样的问题。我在后端获得了一个新证书,所有浏览器都接受了它,没有任何问题。但我的 Java 客户端失败,并出现相同的“无法找到请求目标的有效认证路径”错误。

这个问题的决定性答案来自@bongya。除了我自己的证书之外,我还必须在后端添加中间证书和 CA 证书,这解决了问题。

希望这可以帮助任何遇到类似问题的人。

© www.soinside.com 2019 - 2024. All rights reserved.