使用DocuSign API握手时,我得到javax.net.ssl.SSLHandshakeException
。
尝试使用DocuSign API登录示例会出现证书错误。
以下代码是DocuSign的示例。它设置了Signer和DocuSign配置对象。执行setDefaultApiClient
调用时,会生成错误。
线程中的异常" main" com.sun.jersey.api.client.ClientHandlerException:jav ax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKI X路径构建失败:sun.security.provider.certpath.SunCertPathBuilderExcepti on:无法找到所请求目标的有效证书路径 在com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle (URLConnectionClientHandler.java:155) 在com.sun.jersey.api.client.Client.handle(Client.java:652) 在com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) 在com.sun.jersey.api.client.WebResource.access $ 200(WebResource.java:74) at com.sun.jersey.api.client.WebResource $ Builder.get(WebResource.java:509) 在com.docusign.esign.client.ApiClient.getAPIResponse(ApiClient.java:563) 在com.docusign.esign.client.ApiClient.invokeAPI(ApiClient.java:595) 在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 :(得分:0)
“无法找到有效的证书路径”意味着您需要使用“标准”受信任的根证书集来设置Java堆栈。
发生了什么:您正在尝试与DocuSign建立SSL连接。作为SSL流程的一部分,您的计算机必须确定它是否信任远端(在本例中为DocuSign)。
为此:您的SSL堆栈尝试构建从其根CA证书的信任存储区到DocuSign提供的证书的信任路径。但它不能,因为你还没有正确设置你的信任存储。
通常的“标准”受信任根证书集是Mozilla Firefox浏览器使用的证书。
请参阅https://curl.haxx.se/docs/caextract.html
如何将它们加载到Java堆栈中,因为受信任的证书依赖于堆栈。
This SO question看起来很相关,但我不是Java人。如果你想不出来,可以问另一个问题。