Не удалось подключиться к серверу APNS Sandbox

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

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

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

$telnet gateway.sandbox.push.apple.com 2195 Trying 17.172.232.226... Подключен к gateway.sandbox.push-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: Ожидать: ДОВЕРЕННЫЙ СЕРТИФИКАТ

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

Спасибо заранее...

Ответ 1

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

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

Создание вашего APN-cert-and-key:

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

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

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

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

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

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

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

    Примечание. Контейнер My Roots имеет четыре сертификата Entrust; два из них с именем "Центр сертификации Entrust.net(2048)" (но с разными расширениями сертификатов, через Get Info). Оба сертификата "Certification Authority" (2048) "Entrust.net", которые эффективны при проверке цепочки доверия; другие два сертификата 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, я предлагаю следующие страницы:

Ответ 2

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

Выполните следующие команды и создайте .p12, используя openssl.

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

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

    • openssl x509 -in developer_identity.cer -inform DER -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 и кодовая фраза, которую вы установили.

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