线上与三方对接的接口项目,因无良三方悄悄升级启用https而导致……

好吧,因请求接口方使用了https,但没有相应的证书导致报错,错误提示如下:

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to
 find valid certification path to requested target

网上查了一下,这是在JDK8及以上高版本使用中,因为源应用程序不信任目标应用程序的证书,在源应用程序的JVM信任库中找不到该证书或证书链的原因导致的。

网上方法不少,一是通过程序设置信任所有证书,不知道怎么搞,没试;

二是删除jdk下安全文件的配置信息,亲测没毛用;

再就是手动生成证书文件,然后放到jdk对应目录下,重启就行,亲测好用。

生成的证书文件存放位置是jdk\jre\lib\security。

生成文件的方法可以参考 生成证书

因为生成文书这个方法需要编译工具类,我这有个已经编译好的,可以直接下载下来用,生成方法参考大神的教程就行。

另外一点小提示:

运行java InstallCert hostname 命令来生成证书文件的时候,hostname就是目标IP和端口,比如java InstallCert  192.168.0.1:8899,如果是域名,不用带https,比如java InstallCert  baidu.com

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐