Создание файла .pem для APNS?

177

Как создать файл .pem для хранения на хост-сервере для данных полезной нагрузки APN?

Biranchi
источник
1
Могу ли я использовать .p12 для apns вместо .pem?
Гаджендра К Чаухан
FYI-определение .pem: serverfault.com/a/21158/193377 Сам по себе PEM не является сертификатом, это просто способ кодирования данных. .... это безопасно вставить в текст сообщения электронной почты, потому что оно имеет якорные линии и является 7-битным чистым.
AnneTheAgile

Ответы:

365

Вот что я сделал: From: blog.boxedice.com и глава 10 «iPhone Advanced Projects» Джо Пецзилло.

С aps_developer_identity.cer в цепочке для ключей:

  1. Запустите Keychain Access с вашего локального Mac и из цепочки для ключей входа в систему, отфильтруйте по категории «Сертификаты». Вы увидите расширяемую опцию под названием «Apple Development Push Services»
  2. Щелкните правой кнопкой мыши «Apple Development Push Services»> «Экспорт» Apple Development Push Services ID123 ″. Сохраните это как apns-dev-cert.p12файл, где вы можете получить к нему доступ. Нет необходимости вводить пароль.
  3. Следующая команда генерирует сертификат в Терминале Mac для формата PEM (Privacy Enhanced Mail Security Certificate):

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

На сервере установите разрешение на доступ к этому незашифрованному ключу с помощью chmod 400.

zaph
источник
3
Я выполнил вышеуказанные шаги и теперь он работает. Я сохранил сертификат и скрипт php на своем локальном веб-сервере (Xampp). Я могу получить токен устройства и использую его в скрипте php. Сценарий php может подключаться и отправлять данные полезной нагрузки. Но все же тогда я не могу получить PUSH-уведомление. В чем проблема ? Уведомления требуют времени для достижения ???
Биранчи
12
В Mavericks '(10.9's) Keychain Access есть возможность экспортировать как .pem! Просто щелкните правой кнопкой мыши на сертификате «Apple Development / Production iOS Push Services» в «Связке ключей» и выберите «Экспорт». Измените формат файла на .pem - готово! Также доступно в качестве параметров экспорта: .p7b & .p12
tylerl
5
.pem отключен для меня, yosemite beta7. У меня есть некоторые проблемы с созданием .pem, когда я открываю его, он говорит, что для распространения вместо dev
Cristi Băluță
2
.pem не отключен для меня, но я не могу сохранить как p12. Вот как это выглядит: i.imgur.com/U2M40dU.png
FooBar
2
Для macOS 10.14 Mojave с помощью приложения Keychain Access вы можете выбрать «Экспортировать ваш« Apple Push Services: сертификат com.yourBundleIdentifier »в формат файла« Privacy Enhanced Mail (.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: Теперь мы должны объединить Key .pem и Certificate .pem, чтобы получить Development .pem, необходимый для Push-уведомлений на этапе разработки приложения.

Если третий шаг был выполнен, запустите:
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

Если третий шаг был выполнен, запустите:
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: Теперь мы должны объединить Key .pem и Certificate .pem, чтобы получить Production .pem, необходимый для Push-уведомлений на этапе разработки приложения.

Если третий шаг был выполнен, запустите:
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.

Если третий шаг был выполнен, запустите:
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
Sourabh Sharma
59

шаги:

  1. Создайте CSR, используя Key Chain Access
  2. Создайте P12, используя Key Chain Access, используя закрытый ключ
  3. APNS App ID и сертификат

Это дает вам три файла:

  • CSR
  • Закрытый ключ в виде файла 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

Запустите приложение «Терминал» и введите следующую команду после запроса

  openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
Durai Amuthan.H
источник
1
После того, как вы сгенерируете p12, это должен быть ответ.
Камень
10

- >> Собственный учебник Apple << - это единственный рабочий набор инструкций, с которым я столкнулся. Это просто, и я могу подтвердить, что он отлично работает как на PHP-сервере Linux, так и на Windows-сервере PHP.

Вы можете найти пятиэтапный процесс создания pem внизу страницы.

capikaw
источник
Да! Просто следуйте простому учебнику. Всего одна простая команда openssl. Я не знаю, имеет ли это значение, но я выполнил команду по SSH на сервер, который подключается к APNS.
Тайлер
1
@tylerl, PEM может быть сгенерирован с любой машины - он не обязательно должен быть сервером, на котором он будет находиться.
capikaw
Нужно ли запускать этот процесс на самом сервере, где развернут код php? или я могу использовать файл .pem, сгенерированный на моем Mac?
Джатин
4
Ссылка не работает по состоянию на сентябрь 2015 г.
Николас Миари,
4

Вы можете посмотреть здесь. У меня есть подробный процесс, описанный с изображениями, начиная с создания сертификата, и заканчивая ключом приложения, профилем обеспечения и, в конечном итоге, pem. http://docs.moengage.com/docs/apns-certificate-pem-file

Гаутам Джайн
источник
4

ПРИМЕЧАНИЕ. Для выполнения любой из этих задач у вас должна быть роль Team Agent или Admin в 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-уведомления для идентификатора приложения
  4. Добавить сертификат SSL к идентификатору приложения
  5. Конвертировать сертификат в формат PEM

Если у вас уже есть SSL-сертификат, настроенный для приложения на веб-сайте Apple Developer Center, вы можете перейти к «Преобразовать сертификат в формат PEM». Имейте в виду, что у вас возникнут проблемы, если у вас также не будет закрытого ключа, сгенерированного на Mac, который создал запрос на подпись, который был загружен в Apple.

Читайте дальше, чтобы узнать, как избежать потери этого закрытого ключа.

Перейдите к сертификатам, идентификаторам и профилям

Xcode не контролирует сертификаты или ключи для push-уведомлений. Чтобы создать ключи и включить push-уведомления для приложения, необходимо перейти на веб-сайт Apple Developer Center. Раздел «Сертификаты, идентификаторы и профили» вашей учетной записи контролирует идентификаторы приложений и сертификаты.

Чтобы получить доступ к сертификатам и профилям, вы должны либо иметь платное членство в программе Apple Developer Program, либо быть частью команды, которая это делает.

  1. Войдите на сайт Apple Developer введите описание изображения здесь
  2. Зайдите в Аккаунт , затем Сертификаты, Идентификаторы и Профили введите описание изображения здесь

Создать идентификатор приложения

Приложения, использующие push-уведомления, не могут использовать подстановочные идентификаторы приложений или профили обеспечения. Каждое приложение требует настройки записи идентификатора приложения на портале Apple Developer Center для включения push-уведомлений.

  1. Перейти к идентификаторам приложений в разделе Идентификаторы
  2. Найдите свое приложение, используя идентификатор пакета. Это может уже существовать.
  3. Если для приложения нет идентификатора приложения, нажмите кнопку (+), чтобы создать его.
  4. Выберите Явный идентификатор приложения в App ID раздела суффикса. введите описание изображения здесь
  5. Введите идентификатор пакета для приложения.
  6. Прокрутите вниз и включите Push-уведомления . введите описание изображения здесь
  7. Нажмите Продолжить .
  8. На следующем экране нажмите Регистрация, чтобы завершить создание идентификатора приложения. введите описание изображения здесь

Включить Push-уведомления для идентификатора приложения

  1. Перейти к идентификаторам приложений в разделе Идентификаторы
  2. Нажмите на идентификатор приложения, чтобы увидеть подробности и прокрутить вниз. введите описание изображения здесь
  3. Нажмите Редактировать введите описание изображения здесь
  4. На экране настроек идентификатора приложения прокрутите вниз до Push-уведомлений. введите описание изображения здесь
  5. Установите флажок, чтобы включить push-уведомления. введите описание изображения здесь

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

Добавить сертификат SSL к идентификатору приложения

  1. В разделе «Разработка SSL-сертификата» нажмите « Создать сертификат» . Вы должны будете сделать это позже для производства.
  2. Apple попросит вас создать запрос на подпись сертификата введите описание изображения здесь

Чтобы создать сертификат, вам нужно будет сделать запрос на подпись сертификата (CSR) на Mac и загрузить его в Apple.

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

Хорошей практикой является наличие отдельной цепочки для ключей специально для учетных данных, используемых для разработки. Если вы сделаете это, убедитесь, что эта цепочка для ключей установлена ​​по умолчанию перед использованием Certificate Assistant.

Создать брелок для учетных данных разработчика

  1. Откройте доступ к связке ключей на вашем Mac
  2. В меню File выберите New Keychain ...
  3. Дайте вашей связке ключей описательное имя, например «Shared Development» или название вашего приложения.

Создать запрос на подпись сертификата (CSR)

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

  1. Откройте Keychain Access на вашем Mac.
  2. Удерживая нажатой клавишу «Control», нажмите на связку ключей в списке цепочек.
  3. Выберите Сделать цепочку для ключей "Shared Development" по умолчанию введите описание изображения здесь
  4. В меню « Связка ключей» выберите « Ассистент сертификата» , затем « Запросить сертификат в центре сертификации» ... из подменю. введите описание изображения здесь
  5. Когда появится Ассистент Сертификата, отметьте « Сохранено на диск» . введите описание изображения здесь
  6. Введите адрес электронной почты, связанный с вашим участием в программе Apple Developer Program, в поле Адрес электронной почты пользователя. поле « .
  7. Введите имя для ключа в поле Common Name . Рекомендуется использовать идентификатор пакета приложения как часть общего имени. Это позволяет легко определить, какие сертификаты и ключи принадлежат какому приложению.
  8. Нажмите продолжить. Ассистент сертификатов предложит сохранить запрос на подпись в файл.
  9. В Keychain Access снова установите брелок «логин» по умолчанию.

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

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

Загрузить запрос на подпись сертификата (CSR)

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

  1. Загрузить запрос на подпись сертификата
  2. Загрузите сертификат, который Apple создала из запроса на подпись сертификата введите описание изображения здесь
  3. В Keychain Access выберите связку разработки из списка цепочек для ключей.
  4. В меню File выберите Import Items ... введите описание изображения здесь
  5. Импортируйте файл сертификата, загруженный из Apple

Ваша цепочка для ключей разработки теперь должна отображать push-сертификат с закрытым ключом в разделе « Мои сертификаты в Access Keychain Access»:

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

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

Файлы цепочки для ключей расположены в ~/Library/Keychains.

Некоторые сторонние push-сервисы требуют сертификаты в формате Privacy Enhanced Mail (PEM), в то время как другие требуют Стандарты криптографии с открытым ключом № 12 (PKCS12 или P12). Сертификат, загруженный из Apple, может быть использован для экспорта сертификатов в этих форматах - но только если вы сохранили закрытый ключ.

Конвертировать сертификат в формат PEM

  1. В Keychain Access выберите созданную ранее цепочку для ключей разработки.
  2. Выберите push-сертификат в разделе « Мои сертификаты» . Там должен быть закрытый ключ с ним. ! [Загрузить сертификат CER] (связка ключей / импорт завершен.png)
  3. В меню File выберите Export Items ... введите описание изображения здесь
  4. На открывшейся панели сохранения выберите «Формат расширенной почты» (.pem) в качестве формата файла.
  5. Сохранить файл
quellish
источник
3

Я бы предложил гораздо более простое решение. Просто используйте Certifire .
Certifire - это приложение macOS, которое генерирует сертификаты push-уведомлений Apple одним щелчком мыши за пару секунд.

Вот шаги:
1. Загрузите приложение.
2. Войдите в систему, используя свои учетные данные Apple Developer.
3. Выберите App-ID
4. Нажмите кнопку «Создать»
5. Готово!

Вы получите сертификаты APN в формате .pem, а также в формате .p12. Более того, вы также получите сочетание .pem и .p12 (ключ + сертификат)!
Гораздо больше, вы также получите версии без этих сертификатов!

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

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

arturdev
источник
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 -----

Вот и все.

Rots
источник
2

Существует самый простой способ создать файл .Pem, если у вас уже есть файл apns 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>?). После создания файла выполните a, chmod +x signpem.shчтобы сделать его исполняемым, и затем вы можете запустить:

~/signpem myCertificate.p12 myCertificate.pem

И myCertificate.pemбудет создан.

Алехандро Иван
источник