Подтвердить что ты не робот

Невозможно подключиться к APNS: код возврата 20 (не удалось получить сертификат локального эмитента)

Я пытаюсь использовать 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/

http://thebirdytoldmeso.com/%28S%28l131v3jmvpdh5255u1jayp20%29%29/userActions/thread/Question.aspx?id=10302792

Да, мы удаляем пароль из закрытого ключа, и он не запрашивает его, когда мы пытаемся подключиться к OpenSSL, поэтому предположительно эта часть работает нормально.

Мы не знаем, что происходит. Беспокойно, что все эти учебники (и Apple, по-видимому) принимают за то, что вы используете Mac, в то время как я занимаюсь разработкой на Windows, а сервер (на котором я работаю) - это Ubuntu; мой коллега, который находится на Mac, делал различные префиксы первых шагов, прежде чем отправлять полученные мне файлы для загрузки на сервер и выполнять заключительные шаги. Может быть, это как-то связано с этим? Или есть какой-то шаг необходимой настройки сервера, который везде опущен?

4b9b3361

Ответ 1

Проверьте свой сертификат с помощью simplepush php script в учебнике от raywenderlich.com, а затем мы можем двигаться дальше. Иногда кажется, что сертификат в порядке, но яблоко сумасшедшее по всем этим вещам.

Ошибка двадцать, я думаю, проблема с вашим закрытым ключом, и я думаю, что может быть проблема с вашим файлом инициализации, а также в соответствии с этим: http://www.raywenderlich.com/forums/viewtopic.php?f=2&t=380&start=100.

Убедитесь, что вы экспортируете все правильно и, если необходимо, отмените и создайте новые сертификаты. Надеюсь, вы сможете решить эту проблему!:)

Ответ 2

Как сказал Рэй Вендерлих, вам может потребоваться добавить это в ваш php файл:

stream_context_set_option($ctx, 'ssl', 'cafile', 'entrust_2048_ca.cer');

Файл центра сертификации, который вы можете скачать здесь: https://www.entrust.net/downloads/binary/entrust_2048_ca.cer