SSLException在调用Paypal Sandbox时“无法生成DH密钥对”

时间:2015-06-10 11:39:22

标签: paypal paypal-sandbox

我使用的是merchantsdk-2.13.117(最新版本)。执行以下代码时,我收到SSLException:

PayPalAPIInterfaceServiceService service = new PayPalAPIInterfaceServiceService(sdkConfig);
SetExpressCheckoutResponseType setExpressCheckoutResponse = service.setExpressCheckout(setExpressCheckoutReq);

Paypal计划改变他们的SSL通信。据我了解,将来只支持“SSL认证VeriSign G5”。出于这个原因,他们将这一变化实施到他们的沙盒中。由于这种变化,我收到了上述异常(在它正常工作之前)。

我现在究竟需要改变什么:

  
      
  • 切换Java版本(使用Java 7)
  •   
  • 更改sdkConfig中的一些参数(参见上面的代码),这是一个包含以下参数的地图:acct1.Signature,acct1.Password,acct1.UserName,acct1.AppId,mode
  •   
  • 在服务器上执行一些更改(使用Tomcat)
  •   
  • 别的什么?
  •   

这里,控制台输出的一部分:

javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1884) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1842) at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1825) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1346) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1300) at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338) at com.paypal.core.HttpConnection.execute(HttpConnection.java:109) at com.paypal.core.APIService.makeRequestUsing(APIService.java:177) at com.paypal.core.BaseService.call(BaseService.java:265) at urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService.setExpressCheckout(PayPalAPIInterfaceServiceService.java:2196) at urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService.setExpressCheckout(PayPalAPIInterfaceServiceService.java:2148)

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法:

在我的项目中,旧版本的Bouncy Castle被列为外部库:

<dependency>
    <groupId>bouncycastle</groupId>
    <artifactId>bcprov-jdk14</artifactId>
    <version>138</version>
</dependency>

这会导致使用SSL通信时出现问题。从我的项目中完全删除库后,与Paypal的SSL通信再次起作用(使用Java 6,7和8)。