Створення .pem-файлу для APNS?


177

Як створити .pem файл, який буде зберігатися на сервері хостингу для даних корисного навантаження APN?


1
Чи можна використовувати .p12 для apns замість .pem?
Gajendra K Chauhan

Визначення FYI .pem: serverfault.com/a/21158/193377 PEM самостійно - це не сертифікат, це лише спосіб кодування даних. .... безпечно вставити в тіло повідомлення електронної пошти, оскільки воно містить якірні лінії та 7-бітне чисте.
AnneTheAgile

Відповіді:


365

Ось що я зробив, З: blog.boxedice.com та "Розширені проекти iPhone" глава 10 Джо Джо Пеззілло.

З aps_developer_identity.cer у брелоку:

  1. Запустіть доступ до брелка з вашого локального Mac та з брелка для входу, відфільтруйте за категорією Сертифікати. Ви побачите опцію, що розширюється, під назвою "Служба розробки Apple Push Services"
  2. Клацніть правою кнопкою миші на "Служби розробки Apple, Push Services"> Експорт "Apple Development Push Services ID123 ″. Збережіть це як apns-dev-cert.p12файл десь ви можете отримати доступ до нього. Не потрібно вводити пароль.
  3. Наступна команда генерує сертифікат у терміналі Mac для формату PEM (сертифікат безпеки посиленої конфіденційності):

    openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts

На сервері встановіть дозвіл на файл цього незашифрованого ключа за допомогою chmod 400.


3
Я дотримувався вищезазначених кроків, і тепер він працює. Я зберігав сертифікат та php скрипт на своєму локальному веб-сервері (Xampp) Я можу отримати маркер пристрою, і я використовую його в скрипті php. PHP-скрипт здатний підключати та надсилати дані корисного навантаження. Але все одно я не в змозі отримати повідомлення PUSH. В чому проблема ? Чи потрібен час для отримання сповіщень ???
Біранчі

12
У доступі до брелоків Mavericks '(10,9') є можливість експортувати як .pem! Просто клацніть правою кнопкою миші на «Apple Development / Виробництво IOS Push - послуги сертифікатів всередині Keychain Access і виберіть Експортувати його Змінити формат файлу .pem - зроблено також доступні в якості опції експорту:.! .P7B & .p12
tylerl

5
.pem для мене відключений, yosemite beta7. У мене є деякі проблеми , що створюють .pem, коли я його відкриття говорить для розподілу замість пристрої
Cristi Балута

2
.pem для мене не вимкнено, але я не можу зберегти як p12. Ось як це виглядає: i.imgur.com/U2M40dU.png
FooBar

2
Для програми macOS 10.14 Mojave за допомогою програми Keychain Access ви можете експортувати "Сертифікат Apple Push Services: com.yourBundleIdentifier" у формат файлу "Політика конфіденційності посилена (.pem)" і зберігати коли завгодно.
5uper_0leh

226

Фаза розвитку:

Крок 1. Створіть сертифікат .pem із сертифіката .p12
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12

Крок 2: Створіть ключ .pem з ключа .p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12

Крок 3 (необов’язково): Якщо ви хочете видалити фразу, задану на другому кроці
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

Крок 4: Тепер нам потрібно об'єднати ключ .pem та сертифікат .pem, щоб отримати Development .pem, необхідний для Push-сповіщень у фазі розвитку програми.

Якщо виконано 3-й крок, запустіть:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

Якщо 3-й крок не виконано, запустіть:
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem

Крок 5: Перевірте дійсність сертифіката та підключення до APNS

Якщо виконано 3-й крок, запустіть:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem

Якщо 3-й крок не виконано, запустіть:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem

Фаза виробництва:

Крок 1. Створіть сертифікат .pem із сертифіката .p12
openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12

Крок 2: Створіть ключ .pem з ключа .p12
openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12

Крок 3 (необов’язково): Якщо ви хочете видалити фразу, задану на другому кроці
openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem

Крок 4: Тепер нам потрібно об'єднати ключ .pem і сертифікат .pem, щоб отримати виробництво .pem, необхідне для Push-сповіщень у фазі виробництва програми.

Якщо виконано 3-й крок, запустіть:
cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem

Якщо 3-й крок не виконано, запустіть:
cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem

Крок 5: Перевірка достовірності сертифікатів і підключення до APNS.

Якщо виконано 3-й крок, запустіть:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem

Якщо 3-й крок не виконано, запустіть:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem


5
Дякую, це єдиний, хто працював на мене.
Ерік Віллегас

6
Зберегли це в моєму дорогоцінному сховищі! : P Найбільша відповідь коли-небудь !!
Почорніння

3
Ви бог, це працює, дякую. ГОЛОС ГОЛОСУ. Це має бути відповіддю, оскільки він детально розглядає, як його створити поетапно
MNM

2
Безумовно, це має бути прийнята відповідь, оскільки відповідь @Rahul Sharma не дала очікуваного результату, тоді як ця відповідь була ідеальною.
Nowdeen

Дякую, що ви зберегли мої години для перевірки дійсності сертифікату. Це має бути прийнята відповідь @Biranchi
Шарма

59

Кроки:

  1. Створіть КСВ за допомогою доступу до брелка
  2. Створіть P12 за допомогою доступу до мережевого ключа за допомогою приватного ключа
  3. Ідентифікатор програми та сертифікат APNS

Це дає три файли:

  • КСВ
  • Приватний ключ як файл p12 ( PushChatKey.p12)
  • Сертифікат SSL, aps_development.cer

Перейдіть у папку, в яку ви завантажили файли, в моєму випадку Робочий стіл:

$ cd ~/Desktop/

Перетворіть файл .cer у .pem файл:

$ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem

Перетворіть файл .p12 приватного ключа у файл .pem:

$ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12

Введіть пароль імпорту:

MAC verified OK Enter PEM pass phrase: Verifying - Enter PEM pass phrase:

Спершу потрібно ввести пароль для файлу .p12, щоб openssl міг його прочитати. Потім потрібно ввести нову парольну фразу, яка використовуватиметься для шифрування файлу PEM. Знову для цього підручника я використовував “pushchat” як прохідну фразу PEM. Вам слід вибрати щось більш безпечне. Примітка: якщо ви не введете парольну фразу PEM, openssl не видасть повідомлення про помилку, але згенерований .pem файл не буде мати приватного ключа в ньому.

Нарешті, об’єднайте сертифікат і ключ в один .pem файл:

$ cat PushChatCert.pem PushChatKey.pem > ck.pem


22

Запустіть програму Terminal і введіть наступну команду після підказки

  openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes

1
Після того, як ви генеруєте p12, це має бути відповіддю.
Камінь

10

- >> Підручник << від Apple << - це єдиний робочий набір інструкцій, які я натрапив. Це прямо вперед, і я можу підтвердити, що він чудово працює як на Linux-сервері PHP, так і на сервері Windows php.

Ви можете знайти їх 5-кроковий процес створення пемру внизу сторінки.


Так! Просто слідуйте простому навчальному посібнику. Всього одна проста команда openssl. Я не знаю, чи це має значення, але я запустив команду SSH'ing на сервер, який підключається до APNS.
tylerl

1
@tylerl, PEM може генеруватися з будь-якої машини - не обов’язково бути сервером, на якому він буде проживати.
capikaw

Чи потрібно запускати цей процес на самому сервері, де розгорнуто php-код? чи можу я використовувати файл .pem, згенерований на моєму комп'ютері?
Ятін

4
Посилання розірвано станом на вересень 2015 року
Nicolas Miari



4

ПРИМІТКА. Щоб виконати будь-яке з цих завдань, ви повинні мати роль агента команди або адміністратора в App Store Connect. Якщо ви не є членом команди в App Store Connect, це, мабуть, не вплине на вас.

Для надсилання push-сповіщень на додаток для iOS потрібно створити ключі кодування. У минулому це був громіздкий процес, який використовував SSL-ключі та сертифікати. Кожен сертифікат SSL був специфічним для однієї програми iOS. У 2016 році Apple представила новий механізм ключів аутентифікації, який є більш надійним та простим у використанні. Нові ключі аутентифікації більш гнучкі, прості в обслуговуванні та застосовуються до більше, ніж у додатку iOS.

Незважаючи на те, що минуло роки з моменту введення ключів аутентифікації, не кожна служба їх підтримує. FireBase та Amazon Pinpoint підтримують ключі аутентифікації. Amazon SNS, Urban Airship, Twilio та LeanPlum цього не роблять. Багато програмних пакетів з відкритим кодом ще не підтримують ключі аутентифікації.

Щоб створити необхідний сертифікат SSL та експортувати його у файл PEM, що містить відкриті та приватні ключі:

  1. Перейдіть до Сертифікатів, Ідентифікаторів та Профілів
  2. Створіть або відредагуйте свій ідентифікатор додатка.
  3. Увімкніть Push Notiices для ідентифікатора програми
  4. Додайте сертифікат SSL до ідентифікатора програми
  5. Перетворити сертифікат у формат PEM

Якщо у вас уже встановлений сертифікат SSL для програми на веб-сайті Центру розробників Apple, ви можете пропустити вперед, щоб перетворити сертифікат у формат PEM. Майте на увазі, що у вас виникнуть проблеми, якщо ви також не матимете приватного ключа, створеного на Mac, який створив запит на підпис, який було завантажено в Apple.

Читайте далі, щоб дізнатися, як уникнути втрати цього приватного ключа.

Перейдіть до Сертифікатів, Ідентифікаторів та Профілів

Xcode не контролює сертифікати чи клавіші для push-сповіщень. Щоб створити ключі та включити натискання сповіщень для програми, потрібно перейти на веб-сайт Центру розробників Apple. У розділі "Сертифікати, ідентифікатори та профілі" вашого облікового запису керуються ідентифікаторами та сертифікатами додатків.

Для доступу до сертифікатів та профілів ви повинні мати або платне членство в програмі Apple Developer Program, або бути членом команди, яка це робить.

  1. Увійдіть на веб-сайт Apple Developer введіть тут опис зображення
  2. Перейдіть до облікового запису , потім Сертифікати, ідентифікатори та профілі введіть тут опис зображення

Створіть ідентифікатор додатка

Програми, які використовують push-сповіщення, не можуть використовувати ідентифікатори програм wildcard або профілі резервування. Кожне додаток вимагає, щоб ви встановили запис ID ID на порталі Центру розробників Apple, щоб увімкнути натискання сповіщень.

  1. Перейдіть до ідентифікаторів додатків у розділі Ідентифікатори
  2. Шукайте свою програму за допомогою ідентифікатора групи. Він може вже існувати.
  3. Якщо для програми немає ідентифікатора програми, натисніть кнопку (+), щоб створити його.
  4. Виберіть явний ідентифікатор програми в розділі Суфікс ідентифікатора додатка . введіть тут опис зображення
  5. Введіть ідентифікатор пакета для програми.
  6. Прокрутіть донизу та ввімкніть " Push Notifications" . введіть тут опис зображення
  7. Клацніть Продовжити .
  8. На наступному екрані натисніть Реєстрація, щоб завершити створення ідентифікатора програми. введіть тут опис зображення

Увімкніть Push Notiices для ідентифікатора програми

  1. Перейдіть до ідентифікаторів додатків у розділі Ідентифікатори
  2. Клацніть на ідентифікатор додатка, щоб переглянути деталі та прокрутіть донизу. введіть тут опис зображення
  3. Натисніть Редагувати введіть тут опис зображення
  4. На екрані налаштувань ідентифікатора додатка прокрутіть униз до пункту "Натиснути сповіщення" введіть тут опис зображення
  5. Установіть прапорець, щоб увімкнути push-сповіщення. введіть тут опис зображення

Створення сертифікатів SSL для push-сповіщень - це процес декількох завдань. Кожне завдання має кілька кроків. Все це необхідно для експорту ключів у формат P12 або PEM. Перегляньте етапи, перш ніж продовжувати.

Додайте сертифікат SSL до ідентифікатора програми

  1. У розділі Сертифікат розробки SSL натисніть Створити сертифікат . Вам потрібно буде це зробити пізніше і для виробництва.
  2. Apple попросить вас створити запит на підписання сертифіката введіть тут опис зображення

Щоб створити сертифікат, вам потрібно зробити Запит на підписання сертифіката (CSR) на Mac та завантажити його в Apple.

Пізніше, якщо вам потрібно експортувати цей сертифікат як файл pkcs12 (він же p12), вам потрібно буде використовувати брелок з того самого Mac . Коли створюється запит на підпис, Keychain Access генерує набір ключів у брелоку за замовчуванням. Ці ключі необхідні для роботи з сертифікатом, який Apple створить із запиту на підписання.

Доброю практикою є окремий брелок, спеціально для облікових даних, які використовуються для розробки. Якщо ви це зробите, переконайтеся, що цей брелок встановлений за замовчуванням перед використанням Assistant Certificate Assistant.

Створіть брелок для облікових даних

  1. Відкрийте доступ до брелка на вашому Mac
  2. У меню Файл виберіть Новий брелок ...
  3. Укажіть описову назву брелока, наприклад, "Спільний розвиток" або назву вашої програми

Створення запиту на підписання сертифіката (CSR)

Під час створення запиту на підпис сертифіката помічник сертифіката генерує два ключі шифрування у брелоку за замовчуванням. Важливо зробити брелок для розробки за замовчуванням, щоб клавіші знаходились у правильному брелоку.

  1. Відкрийте доступ до брелка на вашому Mac.
  2. Клацніть клавішею управління на брелок розвитку в списку брелоків
  3. Виберіть Зробити брелок "Спільний розвиток" за замовчуванням введіть тут опис зображення
  4. З Keychain Access меню виберіть Помічник сертифіката , а потім запитати у Сертифікації ... в підміню. введіть тут опис зображення
  5. Коли з'явиться Помічник сертифіката, поставте прапорець Збережено на диск . введіть тут опис зображення
  6. Введіть адресу електронної пошти, пов’язану з членством у програмі розробника Apple, у полі електронної адреси користувача .
  7. Введіть ім’я ключа в поле Загальна назва . Корисно використовувати ідентифікатор пакета програми як частину загальної назви. Це дозволяє легко визначити, які сертифікати та ключі належать до якої програми.
  8. Клацніть продовжити. Помічник сертифікатів запропонує зберегти запит на підпис у файл.
  9. У Keychain Access знову зробіть брелок "login" за замовчуванням.

Створення запиту на підпис створило пару ключів. Перед завантаженням запиту на підписання переконайтеся, що в ключовій ланцюжку розробки є ключі. Їх імена будуть такими ж, як Загальна назва, що використовується в запиті на підписання.

введіть тут опис зображення

Завантажити запит на підпис сертифіката (CSR)

Після створення запиту на підписання сертифікату завантажте його в Центр розробників Apple. Apple створить сертифікат push-повідомлення із запиту на підписання.

  1. Завантажте запит на підпис сертифіката
  2. Завантажте сертифікат Apple, створений Apple, із запиту на підпис сертифіката введіть тут опис зображення
  3. У Keychain Access виберіть брелок для розробки зі списку брелок
  4. У меню Файл виберіть Імпорт елементів ... введіть тут опис зображення
  5. Імпортуйте файл сертифіката, завантажений з Apple

Тепер ваш брелок для розробки повинен показувати сертифікат push з приватним ключем у розділі Мої сертифікати в доступі до брелка:

введіть тут опис зображення

На цьому етапі слід створити резервну копію брелка розробки. Багато команд зберігають свої сертифікати push на захищених USB-накопичувачах, зобов'язуються до внутрішнього контролю версій або використовують резервне рішення, наприклад Time Machine. Брелок розробки можна ділити між різними членами команди, оскільки він не містить жодних облікових даних для підпису коду.

Файли брелоків розміщені в ~/Library/Keychains.

Деякі послуги, що надають треті сторони, вимагають сертифікатів у форматі PEM (посилена конфіденційність), а інші вимагають стандартів криптографії з відкритим ключем №12 (PKCS12 або P12). Сертифікат, завантажений з Apple, може використовуватися для експорту сертифікатів у цих форматах, але тільки якщо ви зберегли приватний ключ.

Перетворити сертифікат у формат PEM

  1. У Keychain Access виберіть створений раніше брелок для розробки.
  2. Виберіть поштовий сертифікат у розділі Мої сертифікати . З ним повинен бути приватний ключ. ! [Завантажити сертифікат CER push] (брелок / імпорт завершений.png)
  3. У меню Файл виберіть Експорт елементів ... введіть тут опис зображення
  4. На панелі збереження, що відкрилася, виберіть в якості формату файлу пошту з поліпшенням конфіденційності (.pem) .
  5. Збережіть файл

3

Я б запропонував набагато простіше рішення. Просто використовуйте Certifire .
Certifire - це програма macOS, яка генерує сертифікати Apple Push Notification лише одним клацанням миші за пару секунд.

Ось такі дії:
1. Завантажте додаток.
2. Увійдіть за допомогою облікових даних Apple Developer Account.
3. Виберіть App-ID
4. Натисніть кнопку "Створити"
5. Ви готові!

Ви отримаєте сертифікати APN у форматі .pem, а також у форматі .p12. Навіть більше, ви також отримаєте комбіновані .pem та .p12 теж (ключ + cert)!
Набагато більше, ви також отримаєте безпрограмні версії всіх цих сертифікатів!

введіть тут опис зображення

введіть тут опис зображення


2

Ось як я це зробив у Windows 7, після встановлення OpenSSL (посилання переходить до інсталятора Win32, виберіть останню версію, а не легку версію).

За допомогою цього методу вам потрібен лише .cerфайл, завантажений з Apple.

c:\OpenSSL-Win32\bin\openssl.exe x509 -in aps_development.cer -inform DER -out developer_identity.pem -outform PEM

це створить файл, до якого вам також потрібно буде додати приватний ключ.

----- ПОЧАТИ PRIVATE KEY -----
MIIEuwIBADANBgkqhk .... і т.д.
MIIEuwIBADANBgkqhk .... і т.д.
MIIEuwIBADANBgkqhk .... і т.д.
MIIEuwIBADANBgkqhk .... і т.д.
----- END PRIVATE KEY -----
----- BEGIN CERTIFICATE -----
AwIBAgwIBADAwIBADA .... і т.д.
AwIBAgwIBADAwIBADA .... і т.д.
AwIBAgwIBADAwIBADA .... і т.д.
----- END CERTIFICATE -----

Це воно.


2

Існує найпростіший спосіб створити .Pem файл, якщо у вас вже є файл p12 в доступі до ключових ланцюгів.

Відкрийте термінал і введіть команду нижче:

Для розвитку openssl pkcs12 -in apns-div-cert.p12 -out apns-div-cert.pem -nodes -clcerts

Для виробництва openssl pkcs12 -in apns-dist-cert.p12 -out apns-dist-cert.pem -nodes -clcerts

Перейменуйте свій файл P12 з таким ім'ям: apns-div-cert.p12, інакше замість цього вам потрібно ввести своє ім'я файлу. Дякую!!


1

Я ніколи не пам'ятаю opensslкоманду, необхідну для створення .pemфайлу, тому я створив цей скрипт bash для спрощення процесу:

#!/bin/bash
if [ $# -eq 2 ]
then
    echo "Signing $1..."

    if ! openssl pkcs12 -in $1 -out $2 -nodes -clcerts; then
        echo "Error signing certificate."
    else
        echo "Certificate created successfully: $2"
    fi
else
    if [ $# -gt 2 ]
    then
        echo "Too many arguments"
        echo "Syntax: $0 <input.p12> <output.pem>"
    else
        echo "Missing arguments"
        echo "Syntax: $0 <input.p12> <output.pem>"
    fi
fi

Наприклад, signpem.shназвіть його та збережіть у папці користувача ( /Users/<username>?). Створивши файл, зробіть його, chmod +x signpem.shщоб зробити його виконуваним, і тоді ви можете запустити:

~/signpem myCertificate.p12 myCertificate.pem

І myCertificate.pemбуде створено.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.