2016-07-25 48 views
0

獲取javax.net.ssl.SSLHandshakeException做docusignapi handshade獲取JAV ax.net.ssl.SSLHandshakeException做docusignapi handshade

嘗試使用docusignapi登錄樣品拿到證書時錯誤時。

以下代碼是Docusign的示例。設置簽名者和Docusign配置對象。在執行setDefaultApiClient調用時會生成錯誤。

Exception in thread "main" com.sun.jersey.api.client.ClientHandlerException: jav 
     ax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKI 
     X path building failed: sun.security.provider.certpath.SunCertPathBuilderExcepti 
     on: unable to find valid certification path to requested target 
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle 
(URLConnectionClientHandler.java:155) 
at com.sun.jersey.api.client.Client.handle(Client.java:652) 
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) 
at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) 
at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:509) 
at com.docusign.esign.client.ApiClient.getAPIResponse(ApiClient.java:563) 
at com.docusign.esign.client.ApiClient.invokeAPI(ApiClient.java:595) 
at com.docusign.esign.api.AuthenticationApi.login(AuthenticationApi.java:156) 

** **新增

// initialize the api client ApiClient apiClient = new ApiClient(); 
apiClient.setBasePath(BaseUrl); // create JSON formatted auth header 
String creds = "{\"Username\":\"" + UserName + 
    "\",\"Password\":\"" + Password + "\",\"IntegratorKey\":\"" + 
    IntegratorKey + "\"}"; 
apiClient.addDefaultHeader("X-DocuSign-Authentication", creds); 
System.out.println("assign api client to the Configuration object "); 
Configuration.setDefaultApiClient(apiClient); } 
+0

下面是用於實現docusign api調用的代碼 –

+0

//初始化api客戶端 ApiClient apiClient = new ApiClient(); apiClient.setBasePath(BaseUrl); //創建JSON格式的驗證標題 String creds =「{\」用戶名\「:\」「+用戶名+」\「,\」密碼\「:\」「+ Password +」\「,\」IntegratorKey \ 「:\」「+ IntegratorKey +」\「}」; apiClient.addDefaultHeader(「X-DocuSign-Authentication」,creds); System.out.println(「將api客戶端分配給配置對象」); Configuration.setDefaultApiClient(apiClient); } –

+0

歡迎來到StackOverflow!就像提示一樣,您可以編輯您的問題,以便所有代碼都在問題中。 –

回答

0

「無法找到有效的證書路徑」意味着你需要設置你的Java堆棧與「標準」設定的受信任的根證書的。

發生了什麼:您正嘗試與DocuSign建立SSL連接。作爲SSL過程的一部分,您的機器必須確定它是否信任遠端(本例中爲DocuSign)。

要這麼做:您的SSL堆棧會嘗試從其根CA證書的信任存儲區到DocuSign提供的證書建立一條信任路徑。但它不能,因爲你沒有妥善建立你的信任存儲。

通常的「標準」可信根證書組是Mozilla Firefox瀏覽器使用的。

https://curl.haxx.se/docs/caextract.html

如何將它們加載到Java堆棧爲受信任的證書是堆棧相關。

This SO question看起來相關,但我不是一個Java的傢伙。如果你無法弄清楚,請提出另一個問題。

+0

我已將此添加到我的jace目錄中的cacerts商店 –

+0

將此添加到C:\ Program Files \ Java \ jdk1.7.0_45 \ jre \ lib \ security \ cacerts商店。還在我的jdk下向我的cacerts商店添加了demo.docusign.net.crt,DocuSignCodeSigningPublicCertificate.cer,sso.docusign.net.crt。 使用 調用我的代碼java -jar costco -docusigntest.jar -Djavax.net.debug = ssl:handshake 獲取以下錯誤。 線程「main」中的異常 –

+0

線程「main」中的異常com.sun.jersey.api.client.ClientHandlerException:jav ax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKI X路徑構建失敗:sun.security.provider.certpath。SunCertPathBuilderExceptir 上:無法找到有效的認證路徑到要求的目標 在COM。 .. at com.costco.docusign.CoreRecipes.main(CoreRecipes.java:1061) 導致:javax.net.ssl.SSLHandshakeException:sun.security.validator.Validator 異常:PKIX路徑構建失敗:sun。 security.provider.certpath.SunCertPath BuilderException:無法。 –