Я пытаюсь использовать PyAPNS для отправки push-уведомлений в iPhone-приложение. Мы прошли процесс получения сертификата из центра Apple dev, который работает нормально; однако мы следовали нескольким различным учебным пособиям о том, как собрать сертификат и закрытый ключ в один файл .pem, и для всех из них попытка подключения к серверу APNS с использованием OpenSSL с нашего веб-сервера с использованием полученного сертификата дает эта ошибка:
$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns.pem
CONNECTED(00000003)
depth=1 C = US, O = "Entrust, Inc.", OU = www.entrust.net/rpa is incorporated by reference, OU = "(c) 2009 Entrust, Inc.", CN = Entrust Certification Authority - L1C
verify error:num=20:unable to get local issuer certificate
verify return:0
[...certificate chain, server certificate, etc.]
Иногда мы можем ввести что-то в конце всего этого, и соединение не закрывается, пока мы не нажмем enter, иногда нет (он сразу закрывается), но даже когда у нас появляется соединение, PyAPNS всегда терпит неудачу когда мы пытаемся отправить push-уведомление, указав ошибку "Fault 500:" Подключение к серверу APNS не может быть сделано. ", что я могу предположить только по той же причине, что и" неспособность получить сертификат локального эмитента ", - хотя я понятия не имею, какая причина может быть.
В учебники, которые мы проводим, входят:
http://blog.serverdensity.com/how-to-build-an-apple-push-notification-provider-server-tutorial/
http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12
http://www.nasoni.net/2010/12/02/apns-client-development-certificate/
Да, мы удаляем пароль из закрытого ключа, и он не запрашивает его, когда мы пытаемся подключиться к OpenSSL, поэтому предположительно эта часть работает нормально.
Мы не знаем, что происходит. Беспокойно, что все эти учебники (и Apple, по-видимому) принимают за то, что вы используете Mac, в то время как я занимаюсь разработкой на Windows, а сервер (на котором я работаю) - это Ubuntu; мой коллега, который находится на Mac, делал различные префиксы первых шагов, прежде чем отправлять полученные мне файлы для загрузки на сервер и выполнять заключительные шаги. Может быть, это как-то связано с этим? Или есть какой-то шаг необходимой настройки сервера, который везде опущен?