簡體   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