Как создать файл .pem для хранения на хост-сервере для данных полезной нагрузки APN?
Как создать файл .pem для хранения на хост-сервере для данных полезной нагрузки APN?
Ответы:
Вот что я сделал: From: blog.boxedice.com и глава 10 «iPhone Advanced Projects» Джо Пецзилло.
С aps_developer_identity.cer в цепочке для ключей:
apns-dev-cert.p12
файл, где вы можете получить к нему доступ. Нет необходимости вводить пароль.Следующая команда генерирует сертификат в Терминале Mac для формата PEM (Privacy Enhanced Mail Security Certificate):
openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts
На сервере установите разрешение на доступ к этому незашифрованному ключу с помощью chmod 400.
Фаза разработки:
Шаг 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
шаги:
Это дает вам три файла:
PushChatKey.p12
)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, так и на Windows-сервере PHP.
Вы можете найти пятиэтапный процесс создания pem внизу страницы.
Вы можете посмотреть здесь. У меня есть подробный процесс, описанный с изображениями, начиная с создания сертификата, и заканчивая ключом приложения, профилем обеспечения и, в конечном итоге, pem. http://docs.moengage.com/docs/apns-certificate-pem-file
ПРИМЕЧАНИЕ. Для выполнения любой из этих задач у вас должна быть роль 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, содержащий открытый и закрытый ключи:
Если у вас уже есть SSL-сертификат, настроенный для приложения на веб-сайте Apple Developer Center, вы можете перейти к «Преобразовать сертификат в формат PEM». Имейте в виду, что у вас возникнут проблемы, если у вас также не будет закрытого ключа, сгенерированного на Mac, который создал запрос на подпись, который был загружен в Apple.
Читайте дальше, чтобы узнать, как избежать потери этого закрытого ключа.
Xcode не контролирует сертификаты или ключи для push-уведомлений. Чтобы создать ключи и включить push-уведомления для приложения, необходимо перейти на веб-сайт Apple Developer Center. Раздел «Сертификаты, идентификаторы и профили» вашей учетной записи контролирует идентификаторы приложений и сертификаты.
Чтобы получить доступ к сертификатам и профилям, вы должны либо иметь платное членство в программе Apple Developer Program, либо быть частью команды, которая это делает.
Приложения, использующие push-уведомления, не могут использовать подстановочные идентификаторы приложений или профили обеспечения. Каждое приложение требует настройки записи идентификатора приложения на портале Apple Developer Center для включения push-уведомлений.
Создание SSL-сертификатов для push-уведомлений - это процесс нескольких задач. Каждая задача имеет несколько шагов. Все это необходимо для экспорта ключей в формате P12 или PEM. Просмотрите шаги, прежде чем продолжить.
Чтобы создать сертификат, вам нужно будет сделать запрос на подпись сертификата (CSR) на Mac и загрузить его в Apple.
Позже, если вам нужно экспортировать этот сертификат в файл pkcs12 (он же p12), вам нужно будет использовать цепочку для ключей с того же Mac . Когда создается запрос на подпись, Keychain Access генерирует набор ключей в цепочке для ключей по умолчанию. Эти ключи необходимы для работы с сертификатом, который Apple создаст из запроса на подпись.
Хорошей практикой является наличие отдельной цепочки для ключей специально для учетных данных, используемых для разработки. Если вы сделаете это, убедитесь, что эта цепочка для ключей установлена по умолчанию перед использованием Certificate Assistant.
При создании запроса на подпись сертификата помощник по сертификации генерирует два ключа шифрования в цепочке ключей по умолчанию. Важно сделать связку ключей разработки по умолчанию, чтобы ключи находились в правильной связке ключей.
При создании запроса на подпись генерируется пара ключей. Перед загрузкой запроса на подпись убедитесь, что ключи цепочки разработки имеют ключи. Их имена будут такими же, как общее имя, используемое в запросе на подпись.
После создания запроса на подпись сертификата загрузите его в Центр разработчиков Apple. Apple создаст сертификат push-уведомлений из запроса на подпись.
Ваша цепочка для ключей разработки теперь должна отображать push-сертификат с закрытым ключом в разделе « Мои сертификаты в Access Keychain Access»:
На этом этапе следует создать резервную копию цепочки ключей разработки. Многие команды хранят свои push-сертификаты на защищенных USB-накопителях, осуществляют внутренний контроль версий или используют решения для резервного копирования, такие как Time Machine. Связка ключей разработки может быть разделена между различными членами команды, поскольку она не содержит никаких персональных учетных данных для подписи кода.
Файлы цепочки для ключей расположены в
~/Library/Keychains
.
Некоторые сторонние push-сервисы требуют сертификаты в формате Privacy Enhanced Mail (PEM), в то время как другие требуют Стандарты криптографии с открытым ключом № 12 (PKCS12 или P12). Сертификат, загруженный из Apple, может быть использован для экспорта сертификатов в этих форматах - но только если вы сохранили закрытый ключ.
Я бы предложил гораздо более простое решение. Просто используйте Certifire .
Certifire - это приложение macOS, которое генерирует сертификаты push-уведомлений Apple одним щелчком мыши за пару секунд.
Вот шаги:
1. Загрузите приложение.
2. Войдите в систему, используя свои учетные данные Apple Developer.
3. Выберите App-ID
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
это создаст файл, к которому вам затем нужно будет добавить свой закрытый ключ.
----- НАЧАТЬ PRIVATE KEY -----
MIIEuwIBADANBgkqhk .... и т.д.
MIIEuwIBADANBgkqhk .... и т.д.
MIIEuwIBADANBgkqhk .... и т.д.
MIIEuwIBADANBgkqhk .... и т.д.
----- END PRIVATE KEY -----
----- BEGIN CERTIFICATE -----
AwIBAgwIBADAwIBADA .... и т.д.
AwIBAgwIBADAwIBADA .... и т.д.
AwIBAgwIBADAwIBADA .... и т.д.
----- END CERTIFICATE -----
Вот и все.
Существует самый простой способ создать файл .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>
?). После создания файла выполните a, chmod +x signpem.sh
чтобы сделать его исполняемым, и затем вы можете запустить:
~/signpem myCertificate.p12 myCertificate.pem
И myCertificate.pem
будет создан.