OkHttp + ALPN + APNS - результатом является SSL handshake_failure
Попытка использовать OkHttp (v3.4.1) для отправки запросов через HTTP/2 на серверы Apple APNS Production (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 работает, так как всякий раз, когда я пытаюсь отправить push, я вижу что-то похожее на следующее в журналах (примечание: 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
Я подтвердил, что мой универсальный SSL-сертификат для APNS действителен, поскольку наш устаревший код не-HTTP/2-код (основанный на Java-apns) может использовать его и отправлять push-уведомления без проблем.
После сканирования полного журнала отладки SSL создается впечатление, что основная проблема заключается в том, что связь между моим клиентом и серверами APNS никогда не переходит на HTTP/2. Однако мне неясно, какие еще шаги мне нужно предпринять, чтобы обеспечить этот переход.
Я отправил запрос поддержки разработчиков в Apple для получения обратной связи, но я решил, что я также буду публиковать здесь сообщения на случай, если кто-нибудь узнает больше.
Благодарю.