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