Не удается сгенерировать подпись Apple Passbook

Я пишу сценарий оболочки для автоматического создания файла подписи Apple Passbook из manifest.json с использованием сертификата p12. Вот что я делаю:

openssl pkcs12 -passin pass:"mypass" -in "mycert.p12" -clcerts -nokeys -out certificate.pem
openssl pkcs12 -passin pass:"mypass" -in "mycert.p12" -nocerts -out key.pem
openssl smime  -passin pass:"mypass" -binary -sign -signer certificate.pem -inkey key.pem -in manifest.json -out signature -outform DER

Первые две функции работают нормально. По крайней мере оба сертификата.pem и key.pem созданы. Файл подписи тоже создается, но он почему-то пустой (0 байт), хотя manifest.json не пустой, как и сертификат и ключ. Как это может произойти, и как я могу это исправить?


person Tofig Hasanov    schedule 29.09.2012    source источник
comment
Какие сообщения вы получаете от openssl при выполнении этих команд?   -  person Nathan    schedule 01.10.2012
comment
Я не получил никакого сообщения об ошибке. Просто результирующий файл был пуст. Я разместил решение ниже.   -  person Tofig Hasanov    schedule 02.10.2012
comment
Для меня работают две первые команды (по крайней мере, я думаю, что они работают, потому что я получаю 2 файла pem), но затем третья возвращает невозможность загрузки сертификатов. Так запутанно. Любая идея, что это может быть? :(   -  person Mihai Fratu    schedule 24.01.2019


Ответы (1)


Я решил эту проблему. По-видимому, для этого мне также нужен сертификат WWDR.pem. Вот как это работало:

openssl pkcs12 -passin pass:"somepass" -in "mycert.p12" -clcerts -nokeys -out certificate.pem
openssl pkcs12 -passin pass:"somepass" -in "mycert.p12" -nocerts -out key.pem -passout pass:"somepass"
openssl smime -binary -sign -certfile WWDR.pem -signer certificate.pem -inkey key.pem -in manifest.json -out signature -outform DER -passin pass:"somepass"
person Tofig Hasanov    schedule 02.10.2012