我需要创建网络服务客户端,提供服务的公司向我们发送 wsdl 文件。我有 wsdl 文件、用户名和密码、服务 url 和 txt 文件,其中包含一些键,如“20 a9 38 4e 82 3a 94 d1 ...”。服务器具有自签名证书,我尝试通过 InstallCert.java 获取证书,使用 keytool 生成 keystore 等。当我使用 axis2 wsdl2java 从 wsdl 生成客户端时,它会生成客户端,但在生成过程结束时会出现端口 443 错误。当我在 eclipse 中通过 Web 服务资源管理器测试服务时,我得到了 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 错误。我也检查了这个错误,但我找不到解决方案。
谁能告诉我我应该如何在带有 jdk 1.6 的 eclipse apache tomcat 中生成客户端,普通客户端有什么区别。
最佳答案
首先,URL端点应该是httpS而不是http 并使您的信任库/ keystore 可用于 JVM。
参见:http://blog.technogemsinc.com/2008/02/https-connection-in-java.html
我也用过https://code.google.com/p/misc-utils/wiki/JavaHttpsUrl 大约一年前..
从以下两个选项中使用对您来说更方便的选项
让 truststore 对 jvm 可用
-Djavax.net.ssl.trustStore="<%PATH_TO_TRUST_STORE%>\testkeys"
告诉您的 Java/套接字工厂使用这个“信任库”:
System.setProperty( "javax.net.ssl.trustStore", "keystore_file");
System.setProperty( "javax.net.ssl.trustStorePassword", "somepass");
关于java - 从 wsdl 到客户端 java web 服务(服务器有自签名证书),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22655661/