为什么 SSL 连接对 Chrome 有效,但对 Java 无效

为什么 SSL 连接对 Chrome 有效,但对 Java 无效

我已经通过 docker 设置了 sonarqube 实例,并使用 Caddyserver 作为反向代理。

不幸的是,我无法执行声纳扫描仪。
我收到以下错误:

javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:
PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:
无法找到请求目标的有效认证路径

有很多类似的问题,大多数都说你必须将服务器证书导入到客户端。

我不确定为什么我需要为受信任的证书这样做。
我可以通过 chrome 连接到我的 sonarqube 实例,并且连接被标记为安全,证书被标记为有效。

为什么 Chrome 说我的连接有效,而 java 说却不行呢?

答案1

无法找到请求目标的有效认证路径

此错误告诉您 Java 无法验证证书是否可信。Chrome 不一定使用与 Java、Firefox 甚至 curl(如果适用)相同的信任库。每个系统都可以有独立的信任库,也不一定所有系统都共享一个信任库。

为了确保证书是可信的,您必须将根证书从链中导入 Java 使用的信任库。如果不了解所用系统的更多信息,很难说您需要如何导入证书。如果您需要与具有不同根 CA 的不同站点合作,您可能还想尝试安装通用信任库。

相关内容