如何为WSDL客户端生成目的导入CA



我得到了一个WSDL文件,并要求我通过它创建一个JAVA客户端,所以我运行eclipse 4.5.2,创建了一个空的动态web项目,将该WSDL导入该项目,然后右键单击:

  1. Web服务->生成客户端
  2. 设置配置:Tomcat 7.0、Apache Axis
  3. 点击"完成",弹出异常:PKIX构建路径失败

所以我查看了WSDL的内部,它包含一些需要连接到我们的测试服务的链接:

<soap:address location="https://example.com/testwebservice.svc" />

我查看了Stackoverflow,似乎需要从HTTPS服务站点导入CA。但我不知道如何在没有生成代码的情况下"导入"CA。

请告诉我如何解决这个问题,这样我就可以继续我的发展了,谢谢!

=====================

更新

在我将CA导入我的计算机后,这个问题仍然存在吗?这很奇怪,因为我导出了这个WSDL将通过浏览器连接到的所有CA(并且keytool一直告诉我,这个CA在我第一次导入后就已经存在了)。

IWAB0399E Error in generating Java from WSDL:  javax.wsdl.WSDLException: WSDLException (at /wsdl:definitions/wsdl:types/xsd:schema): faultCode=OTHER_ERROR: An error occurred trying to resolve schema referenced at 'https://example.com/CPP/download/xsd0.xsd', relative to 'file:/D:/project/java_client/java_client.wsdl'.: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
javax.wsdl.WSDLException: WSDLException (at /wsdl:definitions/wsdl:types/xsd:schema): faultCode=OTHER_ERROR: An error occurred trying to resolve schema referenced at 'https://example.com/CPP/download/xsd0.xsd', relative to 'file:/D:/project/java_client/java_client.wsdl'.: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.ibm

使用此服务需要几个步骤。

  1. 获取/提取公开服务的证书。这可以通过要求该服务的开发人员提供证书来实现,也可以使用浏览器访问该服务并提取证书(如果可能的话)。

  2. 找到java的默认信任存储。Java/JJRE附带位于Java安装中的全局信任存储。找到cacerts文件。该文件应在/jre/lib/security中提供。

  3. 将中的证书导入信任存储。使用keytool命令在cacerts文件中导入Web服务的证书。

    keytool-import-v-trustcacerts-别名服务器别名-文件服务器.cer-密钥库cacerts-keypass changeit-storepass changet

请注意,这不是推荐的方法,因为这将只信任当前服务器/工作站上的证书,并且在下一次java升级中可能会覆盖此文件。您需要在部署此应用程序的任何地方执行此步骤。

尽管您需要执行以上步骤来创建服务代理(Eclipse/Apache axis项目生成)

最新更新