Як створити .pem файл, який буде зберігатися на сервері хостингу для даних корисного навантаження APN?
Як створити .pem файл, який буде зберігатися на сервері хостингу для даних корисного навантаження APN?
Відповіді:
Ось що я зробив, З: blog.boxedice.com та "Розширені проекти iPhone" глава 10 Джо Джо Пеззілло.
З aps_developer_identity.cer у брелоку:
apns-dev-cert.p12
файл десь ви можете отримати доступ до нього. Не потрібно вводити пароль.Наступна команда генерує сертифікат у терміналі Mac для формату PEM (сертифікат безпеки посиленої конфіденційності):
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: Тепер нам потрібно об'єднати ключ .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
Кроки:
Це дає три файли:
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
Запустіть програму Terminal і введіть наступну команду після підказки
openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
- >> Підручник << від Apple << - це єдиний робочий набір інструкцій, які я натрапив. Це прямо вперед, і я можу підтвердити, що він чудово працює як на Linux-сервері PHP, так і на сервері Windows php.
Ви можете знайти їх 5-кроковий процес створення пемру внизу сторінки.
Ви можете подивитися тут. У мене є детальний процес, описаний із зображеннями, безпосередньо від створення сертифіката, до ключа програми до профілю надання, зрештою, пем. http://docs.moengage.com/docs/apns-certificate-pem-file
ПРИМІТКА. Щоб виконати будь-яке з цих завдань, ви повинні мати роль агента команди або адміністратора в 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, ви можете пропустити вперед, щоб перетворити сертифікат у формат PEM. Майте на увазі, що у вас виникнуть проблеми, якщо ви також не матимете приватного ключа, створеного на Mac, який створив запит на підпис, який було завантажено в Apple.
Читайте далі, щоб дізнатися, як уникнути втрати цього приватного ключа.
Xcode не контролює сертифікати чи клавіші для push-сповіщень. Щоб створити ключі та включити натискання сповіщень для програми, потрібно перейти на веб-сайт Центру розробників Apple. У розділі "Сертифікати, ідентифікатори та профілі" вашого облікового запису керуються ідентифікаторами та сертифікатами додатків.
Для доступу до сертифікатів та профілів ви повинні мати або платне членство в програмі Apple Developer Program, або бути членом команди, яка це робить.
Програми, які використовують push-сповіщення, не можуть використовувати ідентифікатори програм wildcard або профілі резервування. Кожне додаток вимагає, щоб ви встановили запис ID ID на порталі Центру розробників Apple, щоб увімкнути натискання сповіщень.
Створення сертифікатів SSL для push-сповіщень - це процес декількох завдань. Кожне завдання має кілька кроків. Все це необхідно для експорту ключів у формат P12 або PEM. Перегляньте етапи, перш ніж продовжувати.
Щоб створити сертифікат, вам потрібно зробити Запит на підписання сертифіката (CSR) на Mac та завантажити його в Apple.
Пізніше, якщо вам потрібно експортувати цей сертифікат як файл pkcs12 (він же p12), вам потрібно буде використовувати брелок з того самого Mac . Коли створюється запит на підпис, Keychain Access генерує набір ключів у брелоку за замовчуванням. Ці ключі необхідні для роботи з сертифікатом, який Apple створить із запиту на підписання.
Доброю практикою є окремий брелок, спеціально для облікових даних, які використовуються для розробки. Якщо ви це зробите, переконайтеся, що цей брелок встановлений за замовчуванням перед використанням Assistant Certificate Assistant.
Під час створення запиту на підпис сертифіката помічник сертифіката генерує два ключі шифрування у брелоку за замовчуванням. Важливо зробити брелок для розробки за замовчуванням, щоб клавіші знаходились у правильному брелоку.
Створення запиту на підпис створило пару ключів. Перед завантаженням запиту на підписання переконайтеся, що в ключовій ланцюжку розробки є ключі. Їх імена будуть такими ж, як Загальна назва, що використовується в запиті на підписання.
Після створення запиту на підписання сертифікату завантажте його в Центр розробників Apple. Apple створить сертифікат push-повідомлення із запиту на підписання.
Тепер ваш брелок для розробки повинен показувати сертифікат push з приватним ключем у розділі Мої сертифікати в доступі до брелка:
На цьому етапі слід створити резервну копію брелка розробки. Багато команд зберігають свої сертифікати push на захищених USB-накопичувачах, зобов'язуються до внутрішнього контролю версій або використовують резервне рішення, наприклад Time Machine. Брелок розробки можна ділити між різними членами команди, оскільки він не містить жодних облікових даних для підпису коду.
Файли брелоків розміщені в
~/Library/Keychains
.
Деякі послуги, що надають треті сторони, вимагають сертифікатів у форматі PEM (посилена конфіденційність), а інші вимагають стандартів криптографії з відкритим ключем №12 (PKCS12 або P12). Сертифікат, завантажений з Apple, може використовуватися для експорту сертифікатів у цих форматах, але тільки якщо ви зберегли приватний ключ.
Я б запропонував набагато простіше рішення. Просто використовуйте Certifire .
Certifire - це програма macOS, яка генерує сертифікати Apple Push Notification лише одним клацанням миші за пару секунд.
Ось такі дії:
1. Завантажте додаток.
2. Увійдіть за допомогою облікових даних Apple Developer Account.
3. Виберіть App-ID
4. Натисніть кнопку "Створити"
5. Ви готові!
Ви отримаєте сертифікати APN у форматі .pem, а також у форматі .p12. Навіть більше, ви також отримаєте комбіновані .pem та .p12 теж (ключ + cert)!
Набагато більше, ви також отримаєте безпрограмні версії всіх цих сертифікатів!
Ось як я це зробив у 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 файл, якщо у вас вже є файл 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
буде створено.