Недавно я приобрел цифровой сертификат GoDaddy для подписи приложения Adobe Air. GoDaddy и, возможно, некоторые другие центры сертификации предоставляют свои сертификаты в виде файлов SPC. Однако большая часть информации о компиляции и подписи приложения air предполагает, что у вас есть файл p12. Я потратил некоторое время на выяснение того, как справиться с этой проблемой, и подумал, что было бы неплохо поделиться этим процессом с сообществом SO. Я опубликую ответ в ближайшее время.
Подписание приложения Adobe Air с помощью файла spc
Ответы (1)
Ключом к правильному методу было понимание того, что файл p12 является хранилищем ключей, а не просто сертификатом. Хранилище ключей содержит ключ и сертификат. При подписании приложения Adobe Air вам необходимо указать хранилище ключей, а не только сертификат. Итак, позвольте мне начать сверху.
Шаг 1. Создайте хранилище ключей
keytool -genkey -alias codesigncert -keypass <yourkeypwd> -keyalg RSA -keysize 2048 -dname "CN=displayname,O=companyname,C=US,ST=state,L=city" -keystore codesignstore -storepass <yourstorepwd>
Шаг 2. Создайте запрос на сертификат
keytool -certreq -v -alias codesigncert -file mycsr.pem -keystore codesignstore
Шаг 3. Приобретите сертификат в ЦС, используя CSR, созданный на предыдущем шаге. В моем случае я загрузил сертификат в виде файла SPC.
Шаг 4. Добавьте сертификат в хранилище ключей.
keytool -import -keystore codesignstore -storepass <yourstorepwd> -alias codesigncert -file mycert.spc
Шаг 5. В настоящее время ваше хранилище ключей является хранилищем ключей Java (JKS). Преобразуйте это в PKCS12
keytool -importkeystore -srckeystore codesignstore -srcstoretype JKS -deststoretype PKCS12 -destkeystore codesignstore.p12
Шаг 6. Подпишите приложение
adt -package -storetype pkcs12 -keystore codesignstore.p12 -storepass <yourstorepwd> -keypass <yourkeypwd> <name of output file> application.xml <path to root dir>
Я думаю, что, вероятно, также можно пропустить шаг 5 и выполнить шаг 6, используя хранилище ключей JKS. Однако я не подтверждал, что это работает.