- PVSM.RU - https://www.pvsm.ru -
По роду деятельности столкнулся с необходимостью отправлять push уведомления на яблочные девайсы. Была найдена библиотека JavaPNS 2.2 [1], подготовлен сертификат для Developer версии, написан сервис который шлет push уведомления, все запустилось все завертелось, push уведомления отправляются — в общем полное счастье. Но вот настал день релиза, был вновь подготовлен уже Production сертификат и экспортирован вместе с приватным ключом в p12 все задеплоено на сервера… иииии… как вы наверное уже догадались ничего не заработало :). Судя по логам push отправляется, но на девайс ничего не приходит.
Первым делом смотрим документацию по JavaPNS [2] и видим не очень ободряющую запись:
*ABOUT JAVA 7*:
Some users have reported problems creating SSL connections while using Java 7 (in general, not just with JavaPNS).
Until this issue is completely resolved, you should try to run JavaPNS with Java 5 or 6 if you experience
SSL-related connection issues.
Гугление дает примерно теже результаты и советы. Но было найдено 1 единственное упоминание проблемы:
Java 7 (JDK 1.7) doesn't know about the Entrust Root CA. Import your APNS cert, key, AND the Entrust CA Root certificate into a p12 file. Point the code at that file and it will work.
Суть кратко, по какой-то причине oracle исключил из поставки jre7 корневой сертификат Entrust.
Следовательно, нам нужно подсказать jre об этом центре сертификации. Варианта 2, положить его туда, где ему положенно быть /usr/lib/jre7/… (не наш путь, так как злобный админ не дает права рута, а сам ставить ничего не хочет) и вариант второй — просто включить его в контейнер с сертификат и приватным ключом. Что мы и сделаем.
1. Качаем сертификат
curl https://www.entrust.net/downloads/binary/entrust_ssl_ca.cer > entrust_ssl_ca.cer
2. Импортируем его в KeyChain получаем примерно следующее
3. Выделяем 3 сущности: сертификат, приватный ключ и рутовый сертификат Entrust
4. Правой кнопкой Export 3 items и сохраняем p12 контейнер (незабываем ввести пароль)
5. Далее с этим p12 подключаемся к gateway.push.apple.com и вперед спамить уведомлять пользователей :)
Автор: Ewka
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/38698
Ссылки в тексте:
[1] JavaPNS 2.2: https://code.google.com/p/javapns/
[2] JavaPNS: https://code.google.com/p/javapns/wiki/GeneralRequirements
[3] Источник: http://habrahabr.ru/post/186628/
Нажмите здесь для печати.