繁体   English   中英

使用密钥库文件为SOAP WS运行客户端

[英]Use keystore file to run client for a SOAP WS

给了我一个可以使用的SOAP WS。 他们给了我wsdl文件,可以从中创建客户端存根(我在cxf中使用过wsdl2java实用程序)。

有了该wsdl,我还得到了一个.keystore文件,问题是我确实知道如何将其添加到我的keytool中(这甚至是放置它的正确方法吗?)。

我已经建立了一个junit测试,可以运行它来测试我的客户,但是我不断得到

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

在哪里可以找到有关如何使用此.keystore文件的简单指南?

谢谢

该错误意味着在您的信任库中找不到服务器证书。 检查.keystore文件的内容,以查看它是否包含服务器证书(在您的信任库中列为TrustedEntry)。 如果是,请设置以下系统属性(使用-D JVM参数或System.setProperty())。

javax.net.ssl.trustStore=<<your .keystore>>
javax.net.ssl.trustStorePassword=<<keystore password>>

如果未设置这些属性,将从您的默认位置获取默认属性。[$ JAVA_HOME / lib / security / jssecacerts,$ JAVA_HOME / lib / security / cacerts]

要查看密钥库文件的内容,请使用

keytool -list -v -keystore file.keystore -storepass mypassword

要调试ssl握手过程并查看证书,请设置VM参数-Djavax.net.debug = all

如果Web服务需要双向SSL,则客户端需要发送其身份(从您的密钥库中挑选)。 在这种情况下,您的.keystore将包含一个privateKeyEntry,它将在握手过程中发送到服务器。 要配置它,请设置JVMM属性javax.net.ssl.keyStore和javax.net.ssl.keyStorePassword指向您的密钥库。

下一个对我有用:

  1. 应用程序服务器配置。 Apache Tomcat / 7.0.52 server.xml :在https连接器中设置clientAuth =“ true”

  2. 应用程序服务器配置。 Apache Tomcat / 7.0.52 tomcat-users.xml :使用用户在证书(主题)中显示DN来创建一个用户

  3. Web服务JAX-WS Web服务Eclipse教程 谢谢Arpit! 在部署描述符(web.xml)中添加安全约束

  4. 客户。 用apache-cxf maven插件生成。

  5. 主班:

     HelloWorldImplService helloWorldImplService = new HelloWorldImplService(); HelloWorld helloWorld = helloWorldImplService.getHelloWorldImplPort(); SayHelloWorld parameters = new SayHelloWorld(); parameters.setArg0("World"); SayHelloWorldResponse helloWorldResponse = helloWorld.sayHelloWorld(parameters); System.out.println(helloWorldResponse.getReturn()); 
  6. 客户端JVM选项:

     -Djavax.net.ssl.trustStore=/xxxx/cacerts.jks -Djavax.net.ssl.trustStorePassword=xxxx -Djavax.net.ssl.keyStore=/xxx/user.jks -Djavax.net.ssl.keyStorePassword=xxxx 

您可以在此处查看: 具有证书认证的Java SOAP客户端

一个出色的博客,可帮助您了解HTTPS SSL握手所需的密钥库和证书导入:

http://ruchirawageesha.blogspot.in/2010/07/how-to-create-clientserver-keystores.html

希望它可以帮助您正确设置您的客户端密钥库,以便调用Web服务。 祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM