Создание файла .pem для APNS? - PullRequest
168 голосов
/ 19 ноября 2009

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

Ответы [ 11 ]

340 голосов
/ 19 ноября 2009

Вот что я сделал: От: blog.boxedice.com и глава 10 «Расширенные проекты iPhone» Джо Пецзилло.

При наличии aps_developer_identity.cer в цепочке для ключей:

  1. Запустите Keychain Access с вашего локального Mac и из цепочки для ключей входа в систему, отфильтруйте по категории Certificates. Вы увидите расширяемую опцию под названием «Apple Development Push Services»
  2. Щелкните правой кнопкой мыши «Apple Development 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.

209 голосов
/ 14 января 2015

Фаза разработки:

Шаг 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 (If 3rd step is performed )

Команда: cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem (if not)

Шаг 5: Проверка действительности сертификата и подключения к APNS
Команда: openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem (If 3rd step is not performed )
Команда: openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem (If performed )

Фаза производства:

Шаг 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 и Certificate .pem, чтобы получить Production .pem, необходимый для push-уведомлений на этапе производства приложения
Команда: cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem (If 3rd step is performed ) Команда: cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem (if not)

Шаг 5: Проверка действительности сертификата и подключения к APNS
Команда: openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem (If 3rd step is not performed )
Команда: openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem (Если выполнено)

57 голосов
/ 19 августа 2014

Шаги:

  1. Создание CSR с использованием доступа к цепочке ключей
  2. Создание P12 с использованием доступа к цепочке ключей с использованием закрытого ключа
  3. APNS ID приложения и сертификат

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

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

19 голосов
/ 19 сентября 2013

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

  openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
10 голосов
/ 03 апреля 2013

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

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

4 голосов
/ 04 августа 2015

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

3 голосов
/ 29 ноября 2017

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

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

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

enter image description here

enter image description here

2 голосов
/ 28 августа 2018

ПРИМЕЧАНИЕ: Для выполнения любой из этих задач у вас должна быть роль 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 enter image description here
  2. Перейти к Учетная запись , затем Сертификаты, идентификаторы и профили enter image description here

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

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

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

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

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

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

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

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

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

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

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

Создание цепочки для ключей для учетных данных для разработки

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

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

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

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

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

enter image description here

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

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

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

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

enter image description here

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

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

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

Преобразовать сертификат в формат PEM

  1. В Keychain Access выберите созданную ранее цепочку для ключей разработки.
  2. Выберите push-сертификат в Мои сертификаты . Там должен быть закрытый ключ с ним. ! [Загрузить сертификат CER] (связка ключей / импорт завершен.png)
  3. В меню Файл выберите Экспорт элементов ... enter image description here
  4. На открывшейся панели сохранения выберите Privacy Enhanced Mail (.pem) в качестве формата файла.
  5. Сохранить файл
1 голос
/ 28 декабря 2017

Существует самый простой способ создать файл .Pem, если у вас уже есть файл apns p12 в доступе к цепочке ключей.

Откройте терминал и введите следующую команду:

Для Devlopment 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 голос
/ 13 июня 2017

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

#!/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 будут созданы.

...