0

我在 myEclipse 10.0 中使用 tomcat 6(嵌入式服务器)以及用于 Web 服务应用程序的 Apache CXF。我的问题是我正在尝试连接到一个服务器,该服务器有一个带有一些服务代码的 war 文件。但是,当我尝试通过代码点击它时,我从 CXF 收到此错误:

警告:拦截器已抛出异常,现在正在展开 org.apache.cxf.interceptor.Fault:无法发送消息。

然后这个错误似乎是根本问题:

原因:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径

我使用 InstallCert.java 访问服务器,它给了我这个:

正在加载 KeyStore jssecacerts...打开连接到:443...开始 SSL 握手...

没有错误,证书已经被信任

我使用 Porticle 查看 cacerts 文件,果然服务器 sha1 和 md5 信息与服务器上的信息完全匹配。cacerts 文件位于 java/jre6/lib/security 文件夹下,我认为它是在加载时由 tomcat 自动拾取的。

我还创建了一个 .bin 文件夹作为另一个想法,并将其放在 tomcat 的 webapps 目录下,并像这样修改了服务器 xml:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="<path on my machine>/webapps/tomcat.bin" keystorePass="changeit" />

我发现一些文章展示了如何将证书加载到您的密钥库,但这似乎不是问题,即使这是此错误的常见解决方案。是否有我遗漏的东西或者我收到此错误的其他原因?

4

1 回答 1

0

事实证明,myEclipse 有它自己的 jre,运行它自己的默认 cacerts 文件。在我的机器上它位于:C:\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\jre\lib\security。

我使用 ProcessExplorer 查看 javaw.exe 进程,然后执行 Find(控制键 + F 键),它显示了已加载的附加 jre。我将正确的 cacerts 复制到该目录并重新启动了所有内容,并且成功了!

于 2012-10-03T21:55:29.280 回答