1

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 に送信してフィードバックを求めましたが、誰かがもっと洞察を持っている場合に備えて、ここにも投稿すると思いました。

ありがとう。

4

0 に答える 0