0

这更像是一个一般的 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 中工作。为什么?

4

1 回答 1

0

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

您发布的信息没有帮助(这是我至少可以说的)。
您所说的可能仅在 2 种情况下发生:
1)服务器使用已在 java 的信任库cacert(例如 Verisign)中由受信任的 CA 签名的证书
2)您已启用anonymous密码套件

因为当您将它部署在另一台机器上时,您会遇到握手异常抱怨验证,我想我们可以排除(1)。
根据您的描述,(2)似乎也不可能,因为您尚未启用匿名密码套件。
所以....请用更准确的信息更新您的帖子。还从好坏案例中调试信息

于 2012-04-30T20:46:09.713 回答