Java SunCertPathBuilderException尽管设置了trusr存储属性

Java SunCertPathBuilderException尽管设置了trusr存储属性,java,web-services,ssl,ssl-certificate,truststore,Java,Web Services,Ssl,Ssl Certificate,Truststore,我需要使用一些HTTPS web服务。要使用证书,我通过System.setProperty设置(javax.net.ssl)trustStore、trustStorePassword、keyStore和keystrepassword属性 如果我做了新URL([HTTPS…WSDL]).openStream(),它就可以工作了。因此,我确信信任和密钥库属性是正常的(没有设置这些属性,我的例程就失败了) 问题是,当我尝试使用这项服务时,我会变得出名 sun.security.provider.ce

我需要使用一些HTTPS web服务。要使用证书,我通过System.setProperty设置(javax.net.ssl)trustStoretrustStorePasswordkeyStorekeystrepassword属性

如果我做了
新URL([HTTPS…WSDL]).openStream()
,它就可以工作了。因此,我确信信任和密钥库属性是正常的(没有设置这些属性,我的例程就失败了)

问题是,当我尝试使用这项服务时,我会变得出名

sun.security.provider.certpath.SunCertPathBuilderException:无法 找到请求目标的有效证书路径

例外

有人知道我需要做什么吗?
非常感谢。

有三种可能的故障:

  • 您正在使用自签名证书
  • 您的证书已由公共CA(证书颁发机构)使用中间证书进行签名,但您的web服务器不提供其中间证书
  • 服务器证书和CA中间证书都由web服务器提供,但Java信任库不包含根证书
  • 要解决最后一步问题,请使用:

    检查此帖子您的信任存储是否包括服务器证书(CA->(中间)->服务器证书)的整个证书链?您是否尝试过不显式设置truststore和truststorepass,即默认为JRE附带的
    cacerts
    truststore?如果服务器证书的CA是“已知的”,则不需要指定信任库。