Как создать файл .pem для хранения на хост-сервере данных полезной нагрузки APN?
Создание файла .pem для APNS?
Ответы (11)
Вот что я сделал. От: blog.boxedice.com и глава 10 "Расширенные проекты для iPhone" Джо Пеззилло.
С помощью aps_developer_identity.cer в цепочке ключей:
- Запустите Keychain Access с вашего локального Mac и из цепочки для ключей входа, отфильтруйте по категории Сертификаты. Вы увидите расширяемую опцию под названием «Apple Development Push Services».
- Щелкните правой кнопкой мыши «Apple Development Push Services»> «Экспортировать Apple Development Push Services ID123». Сохраните это как файл
apns-dev-cert.p12
где-нибудь, где вы сможете получить к нему доступ. Нет необходимости вводить пароль. Следующая команда создает сертификат в терминале Mac для формата PEM (сертификат конфиденциальности расширенной почтовой безопасности):
openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts
На сервере установите разрешение файла этого незашифрованного ключа с помощью chmod 400.
-nodes
означает вообще не шифровать закрытые ключи.
- person zaph; 17.03.2016
Этап разработки:
Шаг 1. Создайте сертификат .pem из сертификата .p12openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
Шаг 2. Создайте ключ .pem из ключа .p12openssl 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 сертификата, чтобы получить файл .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 из сертификата .p12openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12
Шаг 2. Создайте ключ .pem из ключа .p12openssl 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
apns-pro-key.p12
?
- person Neil Galiaskarov; 20.07.2020
Certificates.p12
(apns-pro-cert.p12
), что, похоже, сработало. Кто-нибудь дайте мне знать, если это неправильно/плохо.
- person Ted Klein Bergman; 21.08.2020
Шаги:
- Создайте CSR, используя доступ к цепочке ключей
- Создайте P12, используя доступ к цепочке ключей, используя закрытый ключ
- Идентификатор и сертификат приложения 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
Запустите Терминальное приложение и введите следующую команду после запроса
openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
->> Собственный учебник Apple ‹‹ — единственный рабочий набор инструкций, с которым я столкнулся. Это просто, и я могу подтвердить, что он прекрасно работает как на php-сервере Linux, так и на php-сервере Windows.
Вы можете найти их 5-этапный процесс создания pem прямо внизу страницы.
ПРИМЕЧАНИЕ. Для выполнения любой из этих задач у вас должна быть роль 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, содержащего открытый и закрытый ключи:
- Перейдите к сертификатам, идентификаторам и профилям.
- Создайте или отредактируйте свой идентификатор приложения.
- Включить push-уведомления для идентификатора приложения
- Добавьте SSL-сертификат в идентификатор приложения.
- Преобразование сертификата в формат PEM
Если у вас уже настроен SSL-сертификат для приложения на веб-сайте Apple Developer Center, вы можете сразу перейти к Преобразованию сертификата в формат PEM. Имейте в виду, что вы столкнетесь с проблемами, если не также есть закрытый ключ, сгенерированный на Mac, на котором был создан запрос на подпись, загруженный в Apple.
Читайте дальше, чтобы узнать, как не потерять этот закрытый ключ.
Перейдите к сертификатам, идентификаторам и профилям.
Xcode не контролирует сертификаты или ключи для push-уведомлений. Чтобы создать ключи и включить push-уведомления для приложения, необходимо перейти на веб-сайт Apple Developer Center. Раздел «Сертификаты, идентификаторы и профили» вашей учетной записи управляет идентификаторами приложений и сертификатами.
Чтобы получить доступ к сертификатам и профилям, вы должны либо иметь платное членство в программе Apple Developer Program, либо быть частью команды, которая делает это.
- Войдите на веб-сайт Apple Developer
- Перейдите в раздел Учетная запись, затем Сертификаты, идентификаторы и профили
Создайте идентификатор приложения
Приложения, использующие push-уведомления, не могут использовать подстановочные идентификаторы приложений или профили подготовки. Каждое приложение требует, чтобы вы настроили запись идентификатора приложения на портале Apple Developer Center, чтобы включить push-уведомления.
- Перейдите в раздел Идентификаторы приложений в разделе Идентификаторы.
- Найдите свое приложение, используя идентификатор пакета. Он может уже существовать.
- Если для приложения нет существующего идентификатора приложения, нажмите кнопку (+), чтобы создать его.
- Выберите Явный идентификатор приложения в разделе Суффикс идентификатора приложения.
- Введите идентификатор пакета для приложения.
- Прокрутите вниз и включите Push-уведомления.
- Нажмите Продолжить.
- На следующем экране нажмите Зарегистрироваться, чтобы завершить создание идентификатора приложения.
Включить push-уведомления для идентификатора приложения
- Перейдите в раздел Идентификаторы приложений в разделе Идентификаторы.
- Нажмите на идентификатор приложения, чтобы увидеть подробности, и прокрутите вниз.
- Нажмите Изменить
- На экране настроек идентификатора приложения прокрутите вниз до пункта Push-уведомления
- Установите флажок, чтобы включить push-уведомления.
Создание SSL-сертификатов для push-уведомлений — это процесс, состоящий из нескольких задач. Каждое задание состоит из нескольких шагов. Все это необходимо для экспорта ключей в формате P12 или PEM. Просмотрите шаги, прежде чем продолжить.
Добавьте SSL-сертификат в идентификатор приложения.
- В разделе SSL-сертификат разработки нажмите Создать сертификат. Вам нужно будет сделать это позже для производства.
- Apple попросит вас создать запрос на подпись сертификата
Чтобы создать сертификат, вам нужно будет сделать запрос на подпись сертификата (CSR) на Mac и загрузить его в Apple.
Позже, если вам понадобится экспортировать этот сертификат в виде файла pkcs12 (также известного как p12), вам потребуется использовать связку ключей с того же Mac. При создании запроса на подпись Keychain Access создает набор ключей в цепочке ключей по умолчанию. Эти ключи необходимы для работы с сертификатом, который Apple создаст из запроса на подпись.
Рекомендуется иметь отдельную связку ключей специально для учетных данных, используемых для разработки. Если вы сделаете это, убедитесь, что эта цепочка ключей установлена по умолчанию, прежде чем использовать помощник по сертификатам.
Создайте связку ключей для учетных данных разработки
- Откройте доступ к связке ключей на вашем Mac
- В меню Файл выберите Новая связка ключей....
- Дайте вашей связке ключей описательное имя, например «Совместная разработка» или название вашего приложения.
Создание запроса на подпись сертификата (CSR)
При создании запроса на подпись сертификата помощник по сертификатам создает два ключа шифрования в цепочке ключей по умолчанию. Важно сделать связку ключей разработки по умолчанию, чтобы ключи находились в правильной связке ключей.
- Откройте доступ к связке ключей на вашем Mac.
- Удерживая клавишу Control, щелкните связку ключей разработки в списке связок ключей.
- Выберите Сделать связку ключей «Совместная разработка» по умолчанию
- В меню Доступ к цепочке ключей выберите Помощник по сертификации, а затем в подменю Запросить сертификат в центре сертификации....
- Когда появится помощник по сертификации, установите флажок Сохранено на диск.
- Введите адрес электронной почты, связанный с вашим участием в программе Apple Developer Program, в поле Адрес электронной почты пользователя.
- Введите имя ключа в поле Общее имя. Рекомендуется использовать идентификатор пакета приложения как часть общего имени. Это позволяет легко определить, какие сертификаты и ключи принадлежат какому приложению.
- Нажмите «Продолжить». Помощник по сертификатам предложит сохранить запрос на подпись в файл.
- В Keychain Access снова сделайте связку ключей «логин» по умолчанию.
Создание запроса на подпись сгенерировало пару ключей. Перед загрузкой запроса на подпись убедитесь, что в связке ключей разработки есть ключи. Их имена будут такими же, как Общее имя, используемое в запросе на подпись.
Загрузите запрос на подпись сертификата (CSR)
После создания запроса на подпись сертификата загрузите его в Apple Developer Center. Apple создаст сертификат push-уведомления из запроса на подпись.
- Загрузите запрос на подпись сертификата
- Загрузите сертификат, созданный Apple, из запроса на подпись сертификата
- В Keychain Access выберите связку ключей разработки из списка связок ключей.
- В меню Файл выберите Импорт элементов...
- Импортируйте файл сертификата, загруженный из Apple
Ваша связка ключей для разработки теперь должна отображать сертификат с закрытым ключом в разделе Мои сертификаты в Keychain Access:
На этом этапе необходимо создать резервную копию цепочки для ключей разработки. Многие команды хранят свои push-сертификаты на защищенных USB-накопителях, используют внутренний контроль версий или используют решение для резервного копирования, такое как Time Machine. Связка ключей разработки может использоваться совместно разными членами команды, поскольку она не содержит личных учетных данных для подписи кода.
Файлы связки ключей находятся в папке
~/Library/Keychains
.
Некоторым сторонним службам push-уведомлений требуются сертификаты в формате Privacy Enhanced Mail (PEM), в то время как другим требуются стандарты шифрования с открытым ключом № 12 (PKCS12 или P12). Сертификат, загруженный из Apple, можно использовать для экспорта сертификатов в этих форматах, но только в том случае, если вы сохранили закрытый ключ.
Преобразование сертификата в формат PEM
- В Keychain Access выберите созданную ранее связку ключей разработки.
- Выберите push-сертификат в разделе Мои сертификаты. Там должен быть закрытый ключ с ним. ![Загрузить сертификат CER push](связка ключей/импорт завершен.png)
- В меню Файл выберите Экспорт элементов...
- На открывшейся панели сохранения выберите Privacy Enhanced Mail (.pem) в качестве формата файла.
- Сохраните файл
.pem
недоступна. Я могу экспортировать его только в .p12
или .cer
для всех трех сертификатов + ключей песочницы, которые у меня есть. Я даже создал для этого новый сертификат sanbox, но это не сработало. Любые идеи?
- person Honey; 12.12.2020
Вы можете посмотреть здесь. У меня есть подробный процесс, описанный с изображениями, начиная с создания сертификата и заканчивая ключом приложения, профилем подготовки и, в конечном итоге, pem. http://docs.moengage.com/docs/apns-certificate-pem-file
Я бы предложил гораздо более простое решение. Просто используйте Certifire.
Certifire — это приложение для macOS, которое генерирует сертификаты push-уведомлений Apple одним щелчком мыши за пару секунд.
Вот шаги:
1. Загрузите приложение.
2. Войдите в систему, используя данные своей учетной записи разработчика Apple.
3. Выберите идентификатор приложения
4. Нажмите кнопку "Создать"
5. Готово!
Вы получите сертификаты APN в формате .pem, а также в формате .p12. Более того, вы также получите комбинированные файлы .pem и .p12 (ключ+сертификат)!
Более того, вы также получите версии всех этих сертификатов без парольной фразы!
Вот как я сделал это в 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
это создаст файл, в который вам также нужно будет добавить свой закрытый ключ.
-----BEGIN PRIVATE KEY-----
MIIEuwIBADANBgkqhk....etc
MIIEuwIBADANBgkqhk....etc
MIIEuwIBADANBgkqhk....etc
MIIEuwIBADANBgkqhk....etc
MIIEuwIBADANBgkqhk....etc
br> -----КОНЕЦ ЗАКРЫТОГО КЛЮЧА-----
-----НАЧАТЬ СЕРТИФИКАТ-----
AwIBAgwIBADAwIBADA....etc
AwIBAgwIBADAwIBADA....etc
> AwIBAgwIBADAwIBADA....etc
-----КОНЕЦ СЕРТИФИКАТА-----
Вот и все.
Существует самый простой способ создать файл .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 иначе вместо этого вам нужно ввести свое имя файла. Спасибо!!
Я никогда не помню команду 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
будет создано.