SunCertPathBuilderException; JAVA_OPTS 需要密钥库?

SunCertPathBuilderException; JAVA_OPTS with keystore required?

当通过 java API 服务通过 https 连接到远程服务器时,出现以下异常

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

服务器是 Windows Server 2012,它也安装了相应的通配符证书作为根证书。 我使用 keytool 将完全相同的证书导入名为 cacerts 的密钥库,因此 jvm 使用它来防止上述异常。 keytool显示证书安装正确,但连接服务器时仍然出现握手异常

我检查了服务器上的 windows 环境变量,发现缺少 JAVA_OPTS。 甚至尝试重新启动整个服务器,但这也无济于事。

为了使其正常工作,我是否需要手动添加引用密钥库的环境变量,如下所示?

-Djavax.net.ssl.trustStore=C:\path\to\cacerts

我也可以通过将证书添加到 java 应用程序密钥库来解决这个问题。