在我的 Java 应用程序中与贝宝服务器通信时出现 ssl 握手错误

Posted

技术标签:

【中文标题】在我的 Java 应用程序中与贝宝服务器通信时出现 ssl 握手错误【英文标题】:Getting ssl handshake error while communicating with paypal server in my java application 【发布时间】:2016-06-29 07:59:44 【问题描述】:

我正在为我的 java 应用程序使用 paypal 沙盒帐户,并使用 centos 6.7 进行托管。当我运行应用程序时,我在与 paypal 帐户通信时遇到错误。

我收到如下错误,

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
	at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1961)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1077)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
	at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:515)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1299)
	at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338)

【问题讨论】:

【参考方案1】:

有一些安全更新。您需要为沙箱使用 TLS 1.2(更新将需要在稍后的日期应用到实时模式下的 Paypal)。

https://www.paypal-knowledge.com/infocenter/index?page=content&widgetview=true&id=FAQ1766&viewlocale=en_US

这是路线图和不同的日期:

2016 年 1 月 14 日之后,沙盒 API 端点仅支持新标准(HTTP/1.1、TLS 1.2 和 SHA-256 证书)。这包括 www.sandbox.paypal.com 仅接受 HTTPS 用于 IPN 回发。

2016 年 1 月 31 日,生产开始使用新标准(2048 位,SHA-256)颁发 API 凭证证书。

2016 年 2 月 29 日,测试沙盒端点将被移除。

2016 年 3 月 17 日 新的 SFTP IP 地址添加到 reports.paypal.com 的 DNS。

2016 年 4 月 14 日,旧 SFTP IP 地址已从 reports.paypal.com 的 DNS 中删除。

2016 年 5 月 12 日旧的 SFTP IP 地址停止工作。

2016 年 6 月 17 日之后,生产 API 端点将开始迁移到新标准(HTTP/1.1、TLS 1.2 和 SHA-256 证书)

2016 年 9 月 30 日 IPN 回发到 www.paypal.com 只允许 HTTPS

2018 年 1 月 1 日所有证书 API 凭据必须已升级到新标准。

【讨论】:

谢谢@PP_Florian

以上是关于在我的 Java 应用程序中与贝宝服务器通信时出现 ssl 握手错误的主要内容,如果未能解决你的问题,请参考以下文章

在生产系统上使用节点 SDK 处理贝宝付款时出现 401 invalid_client

应用程序在 Mac OS 上使用 MySQL 服务器时出现通信链路故障

从我的 Java 程序访问 URL 时出现 HTTP 503 错误 [重复]

发送 Firebase 消息时出现 SSL 问题

Paypal 订阅按钮 - 添加自定义值

尝试从主机连接到 mysql docker 容器时出现“读取初始通信数据包”错误