OkHttp + ALPN + APNS - 结果是SSL handshake_failure

时间:2016-08-18 20:31:12

标签: java apple-push-notifications http2 okhttp3 alpn

尝试使用OkHttp(v3.4.1)通过HTTP / 2向Apple的生产APNS服务器发送请求(api.push.apple.com:443)。

我按照此处的步骤启用了ALPN:

http://www.eclipse.org/jetty/documentation/current/alpn-chapter.html

我的环境是:

Java(TM) SE Runtime Environment (build 1.7.0_51-b13)

所以我正在使用:

alpn-boot-7.1.0.v20141016.jar

我相信我已经确认ALPN正在工作,因为每当我尝试发送推送时,我会在日志中看到类似于以下内容的内容(注意:ALPN.debug = true):

[C] ALPN protocols [h2, spdy/3.1, http/1.1] for 62587aa8[SSL_NULL_WITH_NULL_NULL: Socket[addr=api.push.apple.com/17.172.233.39,port=443,localport=55984]]
[C] ALPN protocols [h2, spdy/3.1, http/1.1] for 74adce4e[SSL_NULL_WITH_NULL_NULL: Socket[addr=api.push.apple.com/17.172.233.39,port=443,localport=55990]]
[C] ALPN protocols [h2, spdy/3.1, http/1.1] for 221ebc09[SSL_NULL_WITH_NULL_NULL: Socket[addr=api.push.apple.com/17.172.234.15,port=443,localport=55993]]
[C] ALPN protocols [h2, spdy/3.1, http/1.1] for fcb045f[SSL_NULL_WITH_NULL_NULL: Socket[addr=api.push.apple.com/17.172.234.15,port=443,localport=55998]]
[C] ALPN protocols [h2, spdy/3.1, http/1.1] for 3fd11dec[SSL_NULL_WITH_NULL_NULL: Socket[addr=api.push.apple.com/17.172.234.22,port=443,localport=56004]]

在上面的内容之后我也看到以下错误(注意:启用了SSL调试):

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

我已经确认我的APNS通用SSL证书有效,因为我们的遗留代码,非HTTP / 2代码(基于Java-apns)可以使用它并发送推送通知而没有问题。

从扫描完整的SSL调试日志,我得到的印象是,我的客户端和APNS服务器之间的通信永远不会转换为HTTP / 2。但是,我不清楚我需要采取哪些其他措施来确保这种转变。

我已经向Apple发送了开发人员支持请求以获得反馈,但我想我会在这里发布,以防任何人有更多的见解。

感谢。

0 个答案:

没有答案