【发布时间】:2019-10-25 20:55:21
【问题描述】:
我有一个用 java 开发的 Rest web 服务 glassfish,在 centos 服务器上运行。
我们最近选择使用 https 协议,并通过 glassfish 自己在部署时提供的测试证书(端口 8181)开始测试。
使用 Postman 进行测试我只需要在配置中禁用一个选项:“SSL 证书验证”。
但是,在 java 中使用我的服务 service destop 的模块开始抛出异常。
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
在测试环境,windows下,下面几行纠正了问题,已经在生产中,上百个,无法解决。
String certificatesTrustStorePath = "/etc/alternatives/jre_1.8.0/lib/security/cacerts";
System.setProperty("javax.net.ssl.trustStore", certificatesTrustStorePath); System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
centos中的错误是下面帖子中出现的错误,已经阅读了各种原因但无法解决。
Error - trustAnchors parameter must be non-empty
如果你知道如何在 linux 中解决我很感激,但问题不是这个......
我发布的这些行是否指定了 cacerts 文件的位置(以及在我的平台证书中)? 但在我看来这是错误的......我已经使用了第三方 https 休息服务,并且不必指定证书路径......这需要我在结构上了解第三方服务器的一些细节。我错了吗?
所以,我想一定有另一种方法可以做到这一点......有人可以帮忙吗?
【问题讨论】: