为什么签名证书使用Java会导致握手失败?

为什么签名证书使用Java会导致握手失败?,java,ssl,self-signed,Java,Ssl,Self Signed,我正在访问一个web服务。当我在浏览器中转到web服务的URL时,证书将被签名并自动接受 我不明白的是,当我使用Java访问web服务时,我会得到一些类似的东西: javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径生成失败:sun.security.provider.certpath.SunCertPathBuilderException:找不到请求目标的有效证书路径 我可以想象

我正在访问一个web服务。当我在浏览器中转到web服务的URL时,证书将被签名并自动接受

我不明白的是,当我使用Java访问web服务时,我会得到一些类似的东西:

javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径生成失败:sun.security.provider.certpath.SunCertPathBuilderException:找不到请求目标的有效证书路径

我可以想象这意味着证书没有签名,但它是


com.sun.net.ssl.internal.ssl
是否会自动转到证书颁发机构并检查证书是否已签名?如果没有,我是否需要另外设置一些内容才能执行此操作?

您连接的web服务器或URL似乎没有来自授权CA的有效证书。要解决此问题,请参阅此备选方案

您连接的web服务器或URL似乎没有来自授权CA的有效证书。要解决此问题,请参阅此备选方案

除了签名,还有更多的检查。除其他事项外,必须验证生成签名的证书颁发机构。Java的可信证书颁发机构列表与浏览器的不同。您可能需要使用浏览器下载CA证书,并使用Java的keytool安装。

除了签名之外,还有更多的检查。除其他事项外,必须验证生成签名的证书颁发机构。Java的可信证书颁发机构列表与浏览器的不同。您可能需要用浏览器下载CA证书,并用Java的keytool安装。

也许这篇文章会帮助您:也许这篇文章会帮助您:不一定-证书的CA可能不在JRE的列表中。这可能发生在旧的JRE或新的CA上。不一定-证书的CA可能不在JRE的列表中。这可能发生在旧的JRE或新的CA上。所以Java默认不使用CA授权?我认为安全机构的根证书是操作系统范围的属性?默认情况下,Java中有一个列表。但是它与浏览器使用的CA是分开的,所以Java默认不使用CA授权?我认为安全机构的根证书是操作系统范围的属性?默认情况下,Java中有一个列表。但它与浏览器使用的是分开的。