Недавно я приобрел сертификат GoDaddy для кодирования и подписания приложения Adobe Air.
Я создал файл CSR (Code Signing Request) и отправил им. Они отправили обратно файл сертификата .spc (формат PKCS # 7).
Я использую keytool, поставляемый с Adobe Air. Вот команды, которые я использовал.
Создать CSR:
"C:\Program Files (x86)\Adobe\Flex Builder 3\jre\bin\keytool.exe" -genkey -alias codesigncert -keypass password123 -keyalg RSA -keysize 2048 -dname "CN=displayname,O=companyname,C=US,ST=state,L=city" -keystore codesignstore
Импортировать сертификат в хранилище ключей:
"C:\Program Files (x86)\Adobe\Flex Builder 3\jre\bin\keytool.exe" -import -alias codesigncert -file cert.spc -keystore codesignstore
После запуска этой команды я получаю следующее сообщение об ошибке:
keytool error: java.lang.Exception: Certificate reply does not contain public key for <codesigncert>
Что могло пойти не так?
Руководство, которому я следую, таково: http://help.godaddy.com/article/4780
Ответ был очень прост. Файл сертификата не был создан файлом CSR, он был создан другим файлом CSR. Просто получил новый сертификат и все заработало.
После того, как сертификат импортирован в хранилище ключей, я мог запустить следующую команду, чтобы подписать промежуточный файл Adobe Air.
adt -sign -alias codesigncert -storetype jks -keystore codesignstore -storepass storepass123 -keypass password123 "C:\myapp\widget.airi" "C:\myapp\widget.air"
У меня была похожая проблема; несоответствие выданного сертификата и файла запроса сертификата привело к появлению сообщения об ошибке:
keytool error: java.lang.Exception: Certificate reply does not contain public key for <xyzzy>
В моем случае я использовал другой центр сертификации, Thawte. Причина проблемы заключалась в том, что, когда я зашел на веб-сайт сертификатов Thawte, чтобы забрать свой недавно выпущенный сертификат, на сайте было сказано, что мой сертификат готов к загрузке, но любопытно, что по умолчанию они выбрали другой, двухлетний. сертификат, а не тот, который только что был выдан. Итак, я скачал не тот сертификат. Только когда я это сделал:
keytool -printcert -v -file the-pkcs7-file
и увидел старые даты в справке, что понял, что произошло. Затем я загрузил правильный файл сертификата PKCS7.