我需要使用一些 HTTPS 网络服务。要使用证书,我正在设置 (javax.net.ssl) trustStore、trustStorePassword、keyStore 和 keyStorePassword 通过 System.setProperty 的属性。
如果我执行 new URL([HTTPS...WSDL]).openStream()
,它会起作用。所以,我确定信任和 keystore 属性没问题(如果不设置这些属性,我的例程就会失败)。
问题是当我尝试使用该服务时,我得到了著名的
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
异常。
有人知道我需要做什么吗? 非常感谢。
最佳答案
三种可能的失败:
- 您正在使用自签名证书。
- 您的证书已由通用 CA(证书颁发机构)使用中间证书签署,但您的网络服务器不提供他们的中间证书。
- 服务器证书和 CA 中间证书均由您的网络服务器提供,但 Java 信任库不包含根证书。
要解决最后一步,请使用: Import CA root cert
关于java - SunCertPathBuilderException 尽管设置了信任库属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30063754/