Ответ 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, я предлагаю следующие страницы: