我有一个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 文件来解决这个问题吗?
希望对此有所了解。所以,我有一些理解的感觉,请:)