Сертификаты и ключи APNs: объяснение

Сертификаты и ключи APNs: объяснение (.p8 против .p12)

Каждая интеграция push-уведомлений iOS начинается с одной и той же задачи: доказать службе Apple Push Notification service, что вам разрешено отправлять сообщения пользователям вашего приложения. Apple предлагает два способа сделать это — ключ аутентификации APNs (.p8) или сертификат APNs (.p12) — и разница между ними заключается в том, что один вы настраиваете один раз, а другой будете продлевать каждый год, часто в самый неподходящий момент.

В этом руководстве объясняется, как на самом деле работает аутентификация APNs, когда использовать ключ .p8 вместо сертификата .p12 и несколько ошибок, которые связаны с неправильной настройкой.

Как работает аутентификация APNs

Когда ваш поставщик push-уведомлений — PushEngage или ваш собственный сервер — отправляет уведомление, он подключается к API поставщика APNs от Apple и должен доказать две вещи: что он уполномочен отправлять уведомления от вашего имени и что ему разрешено нацеливаться на bundle ID вашего приложения (в терминах APNs это «тема»). Ключ .p8 и сертификат .p12 — это просто два разных способа доказать это.

Сторона устройства отдельна. Ваше приложение регистрируется в APNs и получает токен устройства — эта часть никогда не меняется независимо от того, какой учетной записью пользуется ваш поставщик. Аутентификация — это исключительно забота сервера и Apple, поэтому вы можете переключать методы, не изменяя бинарный файл вашего приложения.

Ключ аутентификации .p8 (используйте его)

Ключ .p8 — это ключ подписи токенов. Ваш поставщик использует его для создания краткосрочных токенов JSON Web Tokens, которые аутентифицируют каждое соединение с APNs. Его свойства делают его выбором по умолчанию практически для всех:

  • Он никогда не истекает. Никакого ежегодного продления, никаких перебоев в работе push-уведомлений в забытую дату.
  • Один ключ охватывает все приложения в вашей учетной записи разработчика. Выпустите второе приложение, и тот же ключ будет его аутентифицировать.
  • Он работает как для сред разработки, так и для продакшена — никаких пар сертификатов для песочницы/продакшена.
  • Он передается как три значения: сам файл .p8, 10-значный идентификатор ключа (Key ID) и идентификатор вашей команды (Team ID).

Две вещи, которые нужно знать перед его созданием. Apple ограничивает вас двумя активными ключами APNs на учетную запись, поэтому крупные организации должны относиться к созданию ключей как к обдуманному действию, а не как к привычке для каждого проекта. И файл .p8 можно загрузить только один раз во время создания — сохраните его там, где ваша команда сможет его найти, потому что Apple не предоставит его вам снова.

Сертификат .p12 (устаревший путь)

Сертификат .p12 — это клиентский сертификат TLS, экспортированный из Keychain Access после его выдачи Apple. Он аутентифицирует само соединение, а не подписывает токены. Он все еще работает, и некоторые политики безопасности предприятий по-прежнему требуют его, но его ограничения — причина, по которой Apple направляет новые интеграции к ключу:

  • Он истекает каждый год. Наиболее частая причина внезапного полного сбоя push-уведомлений — это сертификат APNs, который тихо истек.
  • Он применим к одному приложению. Каждый идентификатор пакета требует своего сертификата, а каждый сертификат — своего календаря продления.
  • Требуется Mac. Для процесса экспорта запроса на подпись и связки ключей нет браузерного решения.

Что следует использовать?

Ключ аутентификации .p8Сертификат .p12
Срок действияНикогдаКаждые 12 месяцев
Область примененияВсе приложения в учетной записиОдин идентификатор пакета
СредыРазработка + производствоРаздельно или вместе для каждого сертификата
Создано изЛюбой браузерMac с Keychain Access
Лимит учетной записи2 активных ключаПары для каждого приложения
Использовать, когдаПочти всегдаПолитика требует сертификаты

Честный ответ: используйте ключ .p8, если только политика безопасности не требует использования сертификата. Меньше движущихся частей, нечего продлевать, один идентификатор для всего вашего портфолио.

Создание ключа .p8 за три минуты

  1. В вашей учетной записи Apple Developer перейдите в раздел Certificates, Identifiers & Profiles → Keys и зарегистрируйте новый ключ.
  2. Назовите его, включите флажок Apple Push Notifications service (APNs) и продолжите.
  3. Загрузите файл .p8 (помните: один шанс), и запишите Key ID, показанный на экране подтверждения, и ваш Team ID со страницы членства в учетной записи.
  4. Загрузите все три значения вашему поставщику push-уведомлений. В PushEngage это один экран в настройках вашего приложения — руководство по учетным данным APNs проведет вас через это с помощью скриншотов.

Ошибки, которые это объясняет

Удивительно большая доля обращений «не работает отправка» на самом деле является проблемами с учетными данными, маскирующимися под другие ошибки. Типичные виновники:

  • BadDeviceToken — вы отправляете токен приложения, собранного в песочнице, через производственную среду, или наоборот. Сборки отладки из Xcode взаимодействуют с песочницей; сборки TestFlight и App Store взаимодействуют с производственной средой.
  • TopicDisallowed — учетные данные не охватывают идентификатор пакета, на который вы нацеливаетесь. Обычно возникает при использовании сертификатов .p12 для каждого приложения и скопированной конфигурации.
  • Внезапный сбой доставки на 100% — истекший срок действия .p12. Проверьте дату истечения срока действия сертификата, прежде чем проверять что-либо еще.
  • InvalidProviderToken — отозванный ключ .p8 или неправильная пара Key ID/Team ID вместе с действительным файлом.

Как это вписывается в вашу интеграцию

Учетные данные APNs — это первый шаг из ровно одной сессии настройки. Загрузите .p8 в PushEngage один раз, и все последующие действия — интеграция iOS SDK 1.0, мультимедийные уведомления через ваше расширение уведомлений, триггерные кампании и сама доставка — будут работать с ним без дальнейших церемоний. Если вы переходите с Firebase, тот же ключ, который вы дали FCM, работает и здесь, что отчасти объясняет, почему миграция с FCM на iOS — это проект на полдня.

Для уровня стратегии, который следует за настройкой, начните с руководства по маркетингу push-уведомлений для приложений. А когда вы будете готовы к отправке, полное руководство по настройке iOS проведет вас от учетных данных до первой кампании менее чем за час.

Добавить комментарий

Мы рады, что вы решили оставить комментарий. Пожалуйста, помните, что все комментарии модерируются в соответствии с нашей политикой конфиденциальности, а все ссылки являются nofollow. НЕ используйте ключевые слова в поле имени. Давайте вести личный и содержательный разговор.

Вовлекайте и удерживайте посетителей после того, как они покинули ваш веб-сайт

Увеличьте ценность каждого посещения веб-сайта с помощью push-уведомлений, которые трудно пропустить.

  • Бесплатный тариф навсегда
  • Простая настройка
  • Поддержка 5 звезд