Убедитесь, что не сохраняете сертификат в каталоге pass. Нельзя рассылать сертификат вместе с талоном.
Итак, вы экспортировали сертификат. У вас должен был получиться файл, который, возможно, называется Certificates.p12. Теперь нужно разделить этот файл на сертификат как таковой и закрытый ключ. Однако если вы подписываете талон с помощью OpenSSL, то вам приходится передавать сертификат и закрытый ключ по отдельности. Чтобы получить из файла Certificates.p12 закрытый ключ и сертификат (этот файл мы только что экспортировали из программы Keychain Access), выполните следующее.
1. Откройте окно терминала, если еще не сделали этого.
2. Перейдите в каталог, в котором вы сохранили экспортированный сертификат (файл. p12).
3. Чтобы получить сертификат, введите в окне терминала следующую команду:
openssl pkcs12 — in «Certificates.p12» — clcerts — nokeys \
— out «exported-certificate»
После того как вы введете эту команду, система сразу же потребует у вас присвоить экспортированному сертификату пароль. В этом примере я задаю пароль 123, но вы придумайте пароль получше.
4. Чтобы получить закрытый ключ из сертификата, экспортированного из связки ключей, выполните в окне терминала следующую команду:
openssl pkcs12 — in «NAME OF YOUR.P12 CERTIFICATE FILE» \
— nocerts — out «NAME OF THE OUTPUT KEY»
Я назвал экспортированный закрытый ключ exported-key, но вы можете назвать его и иначе, если желаете:
openssl pkcs12 — in «Certificates.p12» — nocerts — out «exported-key»
От вас вновь потребуется ввести пароли для ключа. Для моего ключа я указал пароль 1234, чтобы его можно было легко запомнить. Такой же пароль я задал для сертификата. Но если вы работаете в организации, где безопасности уделяется должное внимание, такой пароль вам, разумеется, не подойдет. Выберите пароль, который кажется вам осмысленным. Для максимальной защиты необходимо гарантировать, что все пароли для экспортируемых вами сертификатов/ключей являются уникальными.
Замечательно. Теперь у нас есть файлы экспортированного сертификата и закрытого ключа. Можем перейти к подписыванию талона с их помощью. Чтобы это сделать, выполните следующие шаги.
1. Если вы еще не сделали этого, поместите все файлы, относящиеся к талону (pass.json, manifest.json и все соответствующие изображения), в каталог pass. Вы можете назвать этот каталог как хотите, но в рамках этого раздела рекомендую давать создаваемым каталогам такие же названия, какие даю я. Так нам будет проще ориентироваться, в каком каталоге мы находимся и что делаем в окне терминала.
2. Воспользуйтесь командой cd, чтобы перейти из текущего рабочего каталога в каталог pass, где находятся все интересующие нас файлы талона.
3. Выполните команду rm — f.DS_Store, чтобы убедиться, что в каталоге pass отсутствуют ненужные скрытые системные файлы OS X. Вы также должны проверить, перечислены ли все файлы из этого каталога в файле manifest.json, где наряду с самими файлами должны находиться и их SHA1-хеши. Если в этот каталог просочатся какие-то другие файлы (как перечисленные в файле описания, так и не указанные там), то талон получится недействительным. Его не удастся прочитать в приложении Passbook ни на устройстве с iOS, ни на симуляторе.
4. Выполните в окне терминала следующую команду, чтобы сгенерировать в каталоге pass файл signature:
openssl smime — binary — sign — signer «PATH TO YOUR EXPORTED CERTIFICATE» \
— inkey «PATH TO YOUR EXPORTED PRIVATE KEY» — in manifest.json \
— out signature — outform DER