ошибка keytool: java.ленг.Исключение: не удалось установить цепочку из ответа

создать хранилище ключей:

keytool -genkey -alias tomcat -keyalg RSA -keystore my.keystore -keysize 2048

создать запрос подписи сертификата (CSR):

keytool -certreq -alias tomcat -keyalg RSA -file my.csr -keystore my.keystore

Я ухожу с моим хостинг-провайдера и получить сертификаты. Эти я установил следующим образом:

keytool -import -alias root -keystore my.keystore -trustcacerts -file gd_bundle-g2-g1.crt
keytool -import -alias intermed -keystore my.keystore -trustcacerts -file gdig2.crt
keytool -import -alias tomcat -keystore my.keystore -trustcacerts -file my.crt

когда я установил окончательный сертификат (мой.crt) я получил следующую ошибку:

keytool error: java.lang.Exception: Failed to establish chain from reply

Я считаю, что я импортировал цепь и в правильном порядке, поэтому я очень смущен этим сообщением. Кто-нибудь видит, что я делаю не так?

6 ответов


Я только что обнаружил, что файлы godaddy, поставляемые с моим сертификатом, являются промежуточными сертификатами (на самом деле они кажутся одинаковыми промежуточными сертификатами).

Я получил правильный корневой и промежуточный сертификаты, дважды щелкнув по моему сертификату и глядя на путь сертификата... отсюда я также могу загрузить каждый из этих сертификатов и использовать шаги, используемые в вопросе, чтобы импортировать их

enter image description here


я боролся с той же проблемой около двух недель, пока не нашел способ обойти ее. Проблема была в том, что корневые и промежуточные сертификаты, которые пришли с моим сертификатом от Godaddy, не были теми, которые мне нужны. Я много раз заглядывал в репозиторий Godaddy, не найдя подходящих сертификатов.

Я просмотрел свой сертификат на своем ноутбуке (используя Windows 8.1). Там я увидел цепочку сертификатов, и я смог экспортировать корневые и промежуточные сертификаты. Тогда Я импортировал их в мое хранилище ключей, и он работал так, как должен.

для этого выполните следующие действия:

  1. Просмотр сертификатов на компьютере под управлением Windows. Вы сможете увидеть цепочку сертификатов на третьей вкладке, которая выглядит следующим образом.enter image description here

  2. выберите корневой сертификат из цепочки и нажмите на кнопку "Просмотреть сертификат".

  3. откроется новое окно, перейдите к вторая вкладка и нажмите на кнопку" Сохранить файл". Откроется мастер экспорта для ceritficate.
  4. при экспорте выберите опцию X. 509 base 64 и следуйте инструкциям. Сохранить файл.
  5. повторите для промежуточного сертификата.
  6. загрузите оба сертификата на свой сервер и импортируйте в хранилище ключей, следуя порядку - первый корень, второй промежуточный и, наконец, ваш сертификат. [Нет необходимости импортировать корень сертификат]

Примечание.: Прежде чем импортировать эти сертификаты, мне пришлось удалить те, которые были на моем хранилище ключей и не работали. Для этого я использовал следующие инструкции:

keytool -delete -alias [root] -keystore [keystore file]

Если вы не уверены, что находится внутри вашего keytool, вы можете просмотреть с помощью:

keytool -list -keystore [keystore file]

Я получил ту же ошибку при попытке импортировать сертификаты CA certified в хранилище ключей в среде Linux.

Я выполнил набор шагов и успешно импортировал его.

после получения сертификатов CA certified выполните следующие действия для импорта сертификатов в хранилище ключей.

Шаг 1:

импортируйте корневой сертификат в cacerts, который будет доступен в папке JAVA_HOME/jre/lib/security, используя следующее команда:

keytool -importcert -alias root -file [root certificate] -keystore cacerts

после того, как вы введете выше команду он будет запрашивать пароль, введите пароль и нажмите на да.

Шаг 2:

импорт корневого сертификата с помощью следующей команды:

keytool -importcert -alias root -file [root certificate] -keystore [keystore file name]

после того, как вы введете выше команду он будет запрашивать пароль, введите пароль и нажмите на да.

Шаг 3:

импорт промежуточного сертификата с помощью следующей команды:

keytool -importcert -alias intermediate -file [intermediate certificate] -keystore [key store file name]

как только вы введете над командой его подскажет для замены уже сертификата введите yes.

Примечание: промежуточный сертификат опционный можно проигнорировать, он приходит с сертификатом корня.

Шаг 4:

импорт сертификата сайта с помощью следующей команды:

keytool -trustcacerts -importcert -alias [alias name which give during keystore creation] -file [site certificate] -keystore [key store file name]

Environment выполняются эти команды java версии 7. сертификат выдается GODADDY.

для получения дополнительной информации см. сайт : http://docs.oracle.com/javase/7/docs/technotes/tools/windows/keytool.html#importCertCmd


чтобы решить эту проблему, используют дополнительный переключатель (-trustcacerts) в командах keytool.

команда для импорта промежуточных сертификатов из промежуточного.файл cer для сертификатов.KS файл ключей должен выглядеть так:

keytool-storetype JCEKS-storepass passwd-сертификаты хранилища ключей.КС-импорт -псевдоним промежуточными -trustcacerts -файл промежуточными.cer

команда для импорта сертификата из http.файл cer для сертификатов.KS файл ключей должен выглядеть так:

keytool-storetype JCEKS-storepass passwd-сертификаты хранилища ключей.KS-import-псевдоним http -trustcacerts -файл http.cer

повторная попытка завершить процесс создания и импорта подписанного SSL-сертификата.


загрузите цепочку сертификатов, откройте ее в Windows - она хранит сертификат CA и ваш ответ сертификата от CA.

сначала импортируйте сертификат CA в хранилище ключей, а затем импортируйте ответ из CA.


следующий шаг очень важен перед импортом сертификатов в локальное хранилище ключей. После получения подписанных сертификатов от CA).

импортируйте корневой сертификат в cacerts, который будет доступен в папке JAVA_HOME/jre/lib/security, используя следующую команду:

keytool-importcert-псевдоним корневой файл [корневой сертификат] - keystore cacerts после того, как вы введете выше команду он будет запрашивать пароль, введите пароль и нажмите на да.