这更像是一个一般的 java SSL 问题而不是任何东西......
我正在使用 CXF 连接到安全的 Web 服务。当我在本地 Windows 开发机器上运行它时,它会连接并工作,但是,一旦我将它部署到我的应用程序服务器(glassfish 3.1),它就不再工作了。我明白了:
Caused by: javax.net.ssl.SSLHandshakeException: SSLHandshakeException invoking https://vendorUrl: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1458)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1443)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:659)
我已经尝试将证书添加到 domain\config\cacerts.jks 文件、lib\security\cacerts 文件等中,但由于这已经被问了很多次,所以我没有问为什么这不起作用(尽管,我想知道为什么)。
让我感到困惑的是,为什么这可以在我的本地开发机器上运行而不向任何密钥库添加任何内容?我的意思是,我没有通过浏览器连接到他们的 URL,我没有添加任何东西——它只是第一次从 Eclipse 中工作。为什么?