[英]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指向您的密鑰庫。
下一個對我有用:
應用程序服務器配置。 Apache Tomcat / 7.0.52 。 server.xml :在https連接器中設置clientAuth =“ true” 。
應用程序服務器配置。 Apache Tomcat / 7.0.52 。 tomcat-users.xml :使用用戶在證書(主題)中顯示的DN來創建一個用戶
Web服務JAX-WS Web服務Eclipse教程 。 謝謝Arpit! 在部署描述符(web.xml)中添加安全約束
客戶。 用apache-cxf maven插件生成。
主班:
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());
客戶端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.