这更像是一般的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)
我已经尝试将cert添加到domain \ config \ cacerts.jks文件中,添加到lib \ security \ cacerts文件等等,但由于多次询问,我不会问为什么不是工作(虽然,我想知道为什么)。
令我感到困惑的是,为什么这会在我的本地开发机上运行而不向任何密钥库添加任何内容?我的意思是,我没有通过浏览器连接到他们的URL,我没有添加任何东西 - 它只是第一次来自Eclipse。为什么呢?
答案 0 :(得分:0)
让我困惑的是,为什么这会在我的本地开发机器上运行 没有向任何密钥库添加任何东西?我的意思是,我没有联系到 他们的URL是通过浏览器,我没有添加任何东西 - 它只是工作, 来自Eclipse的第一次。
您发布的信息没有帮助(这是我能说的最少)
你所说的只能在两种情况下发生:
1)服务器使用已由java的信任库cacert
(例如Verisign)中的可信CA签名的证书
2)您已启用anonymous
密码套件
因为当你在不同的机器中部署它时,你会有握手异常抱怨验证,我想我们可以排除(1)。
根据您的描述,似乎(2)也不可能,因为您尚未启用匿名密码套件
所以....请用更准确的信息更新您的帖子。还要调试好的和坏的情况下的信息