Arhn - архитектура программирования

Что это за файл с расширением .p8? (Ключ аутентификации APN/JWT)

Я думаю, что это немного смешно, но трудно найти информацию о том, что это за файл. Я нашел много информации о том, как получить этот Apple Push Notification Authentication Key, но я также хочу точно знать, что это такое.
Вот некоторая информация, которую я нашел:

Преимущества:

  • Нет необходимости повторно генерировать push-сертификат каждый год;
  • Один ключ авторизации можно использовать для всех ваших приложений;
  • То же самое для песочницы и производства.

Из документов Apple:

Доверие подключения поставщика на основе токенов: поставщик, использующий API на основе HTTP/2, может использовать веб-токены JSON (JWT) для предоставления учетных данных проверки для подключения к APN. В этой схеме вы предоставляете открытый ключ, который будет храниться у Apple, и закрытый ключ, который вы сохраняете и защищаете. Затем ваши провайдеры используют ваш закрытый ключ для создания и подписания токенов аутентификации провайдера JWT. Каждый из ваших запросов на push-уведомления должен включать токен аутентификации поставщика.

Вы можете использовать одно соединение на основе токена между провайдером и APN для отправки запросов push-уведомлений всем приложениям, идентификаторы пакетов которых указаны в вашей учетной записи разработчика в Интернете.

Каждый запрос push-уведомления приводит к ответу HTTP/2 от APN, в котором вашему провайдеру возвращаются сведения об успешном или неудачном выполнении. Далее проверьте раздел Доверие между поставщиками и точками доступа на основе токенов.

Вопросы:

  • Что на самом деле представляет собой файл .p8?
  • Какой программой можно открыть? (брелок мне не подошел)
  • Есть ли способ преобразовать его в .pem или .p12?
  • Небольшой вытекающий вопрос, чтобы не создавать новую тему: Серверная часть работает с .p8 так же, как и с .p12, или нужно добавить дополнительные инструменты?

Ответы:


1

Вот состояние моего исследования:

Файл APNS .p8 содержит PRIVATE KEY, который используется для ПОДПИСАНИЯ содержимого JWT для сообщений APNS. Сам файл представляет собой чистый текстовый файл, KEY внутри отформатирован в формате PEM.

Часть между -----BEGIN PRIVATE KEY----- и -----END PRIVATE KEY----- представляет собой представление ASN.1 PKCS#8 в формате base64 самого ключа. Некоторые могут использовать следующую веб-службу для извлечения содержимого (ASN1JS).

Сам KEY имеет длину 32 байта и используется для создания необходимой подписи ECDSA P-256 SHA-256 для JWT. Результирующий JWT выглядит следующим образом: '{Заголовок JWT в кодировке base64}.{Полезная нагрузка JWT в кодировке base64}.Signature (64 байта) в кодировке base64".

Существует множество веб-сервисов для расшифровки таких токенов, но некоторые не смогли проверить подпись, так как соответствующий ПУБЛИЧНЫЙ КЛЮЧ неизвестен (Apple держит его в секрете при предоставлении ЧАСТНОГО КЛЮЧА).

РЕДАКТИРОВАТЬ: кажется, что ОТКРЫТЫЙ КЛЮЧ также включен в файл .p8, его можно извлечь через OpenSSL (и он виден при декодировании содержимого ASN.1: 520-битный поток).

openssl ec -in AuthKey_123ABC4567.p8 -pubout -out AuthKey_123ABC4567_Public.p8

04.03.2019

2

Расширения файлов — это просто соглашение, но, скорее всего, расширение .p8 используется для указания того, что это PKCS#8 PrivateKeyInfo (или EncryptedPrivateKeyInfo).

Я ожидаю, что программа Keychain сможет открыть его как «ключ», но не имея Mac под рукой, я не могу сказать. Он должен открываться с помощью SecItemImport (kSecFormatOpenSSL, kSecItemTypePrivateKey).

Есть ли способ преобразовать его в .pem или .p12?

Предполагая, что вы имеете в виду «сертификат» под .pem, нет. Если вы имеете в виду кодировку PEM, конечно. Это либо «НАЧАТЬ ЗАКРЫТЫЙ КЛЮЧ», либо «НАЧАТЬ ЗАШИФРОВАННЫЙ ЗАКРЫТЫЙ КЛЮЧ», в зависимости от.

Технически его также можно преобразовать в PKCS#12. Но импортер Apple PKCS # 12 не будет импортировать (последний раз, когда я видел) закрытые ключи, которые он не может определить, к какому сертификату они принадлежат (из того же PKCS # 12).

Это просто закрытый ключ, сертификата нет (поэтому нет истечения срока действия). Так что подходы на основе сертификатов не имеют смысла.

Может ли серверная сторона работать с .p8 так же, как .p12, или нужно добавить дополнительные инструменты?

Это полностью зависит от деталей протокола, которых я не знаю. Если протокол транспортировал сертификат, то в преобразовании участвует другой механизм. Если бы он просто передал подпись, а сервер искал открытый ключ для проверки, то на стороне сервера ничего не изменилось бы.

16.03.2018

3

Это текстовый файл! Расширение .p8 означает простой текстовый файл, содержащий открытый/закрытый ключ. Вы можете открыть его в любом текстовом редакторе (TextEdit, vim, Sublime Text), чтобы увидеть свой ключ.

09.06.2018
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..