Не удалось подключиться к серверу APNS Sandbox - PullRequest
11 голосов
/ 21 июля 2011

Я пытаюсь подключиться к серверу Apple APNS со следующими наблюдениями:

1) открыт порт 2195 2) С парольной фразой действительного ключа для APNS_SSLCertificate_Key.pem 3) Сертификат доверия (2048), загруженный с https://www.entrust.net/downloads/binary/entrust_ssl_ca.cer

4) С успешным ответом telnet, как показано ниже:

$ telnet gateway.sandbox.push.apple.com 2195 Попытка 17.172.232.226 ... Подключена к gateway.sandbox.С apple.com.akadns.net.Экранирующим символом является '^]'.

Но когда я запускаю следующую команду openssl на моем сервере для проверки подключения APNS:

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert  APNS_SSLCertificate_Key.pem -debug -showcerts -CAfile server-ca-cert.pem

Я получаю сообщение об ошибке следующим образом:

невозможно загрузить сертификат 57013: ошибка: 0906D06C: процедуры PEM: PEM_read_bio: нет начальной строки: /SourceCache/OpenSSL098/OpenSSL098-35/src/crypto/pem/pem_lib.c: 650: ожидание: Доверенный сертификат

Поэтому, пожалуйста, предложите, как решить эту проблему

Заранее спасибо ......

Ответы [ 2 ]

36 голосов
/ 16 августа 2011

Я столкнулся с этой же проблемой; в конечном итоге эта ошибка была решена путем повторного экспорта сертификата Entrust из системных корней приложения Access / X Keychain Access.

В завершение я дам полное объяснение того, как я создал файлы ключей / сертификатов (что должно было быть в TechNote 2265 от Apple: https://developer.apple.com/library/content/technotes/tn2265/_index.html)

Создание вашего APN-сертификата и ключа:

  1. Запустить Keychain Access; выберите брелок «логин» и категорию «Мои сертификаты»
  2. Выберите сертификат с именем формата «Apple Development IOS Push Services: ...»
  3. Экспорт сертификата (в меню в разделе «Файл» .. «Экспорт элементов»)
  4. Экспорт в формат .p12.
    Теперь он содержит ваш сертификат и закрытый ключ в зашифрованном формате обмена. Следующий шаг - преобразовать его в защищенный паролем .pem файл
  5. Используя терминал, выполните следующую команду (конечно, используя свои собственные имена файлов):

    openssl pkcs12 -in PushCertKey.p12 -out PushCertKey.pem

    (Вам нужно будет ввести пароль для файла .p12 и указать другую фразу-пароль для файла .pem.)

    Если вы действительно действительно не хотите использовать фразу-пароль для файла .pem, попробуйте:

    openssl pkcs12 -in PushCertKey.p12 -out PushCertKeyNoCrypt.pem -nodes

Создание файла сертификата CA:

  1. Элемент списка
  2. Запустить приложение Keychain Access
  3. Перейти к системным корням
  4. Экспорт сертификата с именем «Центр сертификации Entrust.net (2048)» в файл .pem.

    Примечание. Контейнер My Roots имеет четыре сертификата Entrust; два из них с именем «Entrust.net Certification Authority (2048)» (но с разными расширениями сертификатов, через Get Info). Оба сертификата «Entrust.net Certification Authority (2048)» эффективны при проверке цепочки доверия; два других сертификата Entrust не работали. Что еще более важно, сертификат Entrust, на который ссылается Apple TechNote 2265, также не работает.

    Убедитесь, что вы экспортируете в формат .pem; по умолчанию .cer, и этот шаг легко пропустить.

Запустите команду проверки:

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert PushCertKey.pem -debug -showcerts -CAfile "Entrust.net Certification Authority (2048).pem" 

Этот сервер и процесс предполагают, что вы подключаетесь к серверу APN Apple Dev Sandbox; если вы пытаетесь использовать производственный сервер APN, вам нужно будет использовать правильный сервер и порт.

Для получения дополнительной информации об openssl, я предлагаю следующие страницы:

0 голосов
/ 28 июня 2013

Проблемы с SSL: пошаговое решение. Большинство проблем связано с проблемами закрытых ключей, которые можно решить следующим образом.

Следуйте приведенным ниже командам и создайте файл .p12 с помощью openssl.

  1. Вам понадобится developer_identity.cer <= скачать с Apple mykey.p12 <= Ваш закрытый ключ </p>

  2. Запустите эти команды на вашем терминале, где openssl настроен, установлен или работает:

    • openssl x509 -in developer_identity.cer -информировать DER -out -out developer_identity.pem -outform PEM
    • openssl pkcs12 -nocerts -in mykey.p12 -out mykey.pem
    • openssl pkcs12 -export -inkey mykey.pem -in developer_identity.pem -out iphone_dev.p12

Последним p12, который вам потребуется, является файл iphone_dev.p12 и заданная вами фраза-пароль.

Попробуй еще раз, надеюсь, твоя проблема исправлена, как всегда для меня. :)

...