【问题标题】:SSLException "Could not generate DH keypair" when calling Paypal Sandbox调用 Paypal Sandbox 时出现 SSLException“无法生成 DH 密钥对”
【发布时间】:2015-08-25 15:19:59
【问题描述】:

我正在使用 Mercersdk-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)

【问题讨论】:

    标签: paypal paypal-sandbox


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 2015-11-20
      • 2011-01-28
      • 2014-06-26
      • 2011-10-14
      相关资源
      最近更新 更多