Ошибка keytool: ответ сертификата не содержит открытый ключ для

Я недавно купил сертификат от 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

2 ответа

Решение

Ответ был очень прост. Файл сертификата не был создан файлом 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.

Другие вопросы по тегам