2012-04-30 28 views
0

这是一个比任何东西都更通用的java SSL问题...服务器上的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) 

我试着添加证书到域\ CONFIG \ cacerts.jks文件,到lib \安全\ cacerts文件等,但由于已经被问了很多次我米不问为什么这是行不通的(虽然,我想知道为什么)。

我有什么困惑的是,为什么这会在我的本地开发机器上工作而不向任何密钥库添加任何内容?我的意思是,我没有通过浏览器连接到它们的URL,我没有添加任何东西 - 它只是在Eclipse中第一次工作。为什么?

+0

您正在使用的两台机器有可能使用不同的'cacerts'配置不同的JRE。用'keytool'列出他们的内容。 – Bruno

回答

0

什么东西有我困惑的是,为什么会在我的本地开发机器 这方面的工作,无所添加任何密钥库?我的意思是,我没有通过浏览器连接到 他们的URL,我没有添加任何东西 - 它刚刚工作,第一次来自Eclipse。

您发布的信息无用(这是我能说的最少的)。
你所说的在仅2例可能发生:
1)服务器使用签名的证书可信CA已经在Java的信任cacert(如威瑞信)
2)您已启用anonymous密码套件

因为当你在不同的机器上部署它时,你有抱怨验证的握手异常,我想我们可以排除(1)。
从你所描述的看来,(2)似乎也是不可能的,因为你还没有启用匿名密码套件。
所以....请更新您的文章更准确的信息。同时调试好坏情况下的信息

+0

对不起,我对SSL很新,所以我不确定会有什么帮助。我会更深入地研究它。 FWIW,除了SSL之外,这个应用还使用wssj,也许这跟它有关系,我不确定。 – javamonkey79

相关问题