Ошибка keytool: java.lang.Exception: Не удалось установить цепочку из ответа
Создать хранилище ключей:
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
Когда я установил окончательный сертификат (my.crt), я получил следующую ошибку:
keytool error: java.lang.Exception: Failed to establish chain from reply
Я считаю, что я импортировал цепочку и в правильном порядке, поэтому я очень смущен этим сообщением. Может ли кто-нибудь увидеть, что я делаю неправильно?
Ответы
Ответ 1
Я только что обнаружил, что файлы godaddy, поставляемые вместе с моим сертификатом, являются промежуточными сертификатами (на самом деле они кажутся одним и тем же промежуточным сертификатом).
Я получил правильные корневые и промежуточные сертификаты, дважды щелкнув по моему сертификату и посмотрев путь к сертификату... отсюда я также мог загрузить каждый из этих сертификатов и использовать шаги, используемые в вопросе для их импорта
![enter image description here]()
Ответ 2
Я боролся с той же проблемой около двух недель, пока не нашел способ обойти это. Проблемы заключались в том, что корневые и промежуточные сертификаты, которые поставлялись с моим сертификатом от Godaddy, были не теми, которые мне нужны. Я много раз искал в репозитории Godaddy, не в состоянии найти подходящие сертификаты.
Я просмотрел свой сертификат на своем ноутбуке (используя Windows 8.1). Там я увидел цепочку сертификатов, и я смог экспортировать корневые и промежуточные сертификаты. Затем я импортировал их в хранилище ключей и работал так, как должен.
Для этого выполните следующие действия:
-
Просмотр сертификата на компьютере под управлением Windows. Вы увидите цепочку сертификатов на третьей вкладке, которая выглядит следующим образом. ![ввести изображение описание здесь]()
-
Выберите корневой сертификат из цепочки и нажмите кнопку "Просмотреть сертификат".
- Откроется новое окно, перейдите ко второй вкладке и нажмите кнопку "Сохранить файл". Это откроет мастер экспорта для вашего ceritficate.
- При экспорте выберите опцию X.509 base 64 и следуйте инструкциям. Сохраните файл.
- Повторите для промежуточного сертификата.
- Загрузите оба сертификата на свой сервер и импортируйте их в хранилище ключей, следуя порядку: первый корень, второй промежуточный и, наконец, ваш сертификат. [Нет необходимости импортировать корневой сертификат]
Примечание:
Прежде чем я импортировал эти сертификаты, мне пришлось удалить те, которые были в моем хранилище ключей, и не работали. Для этого я использовал следующие инструкции:
keytool -delete -alias [root] -keystore [keystore file]
Если вы не знаете, что находится внутри вашего keytool, вы можете просмотреть, используя:
keytool -list -keystore [keystore file]
Ответ 3
У меня такая же ошибка при попытке импортировать сертификаты, сертифицированные CA, в хранилище ключей в среде Linux.
Я выполнил множество шагов и успешно импортировал их.
После получения сертификатов, сертифицированных CA, выполните следующие шаги для импорта сертификатов в хранилище ключей.
шаг 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]
Среда, выполняемая этими командами, представляет собой сертификат Java версии 7. GODADDY.
для получения дополнительной информации обратитесь на сайт: http://docs.oracle.com/javase/7/docs/technotes/tools/windows/keytool.html#importCertCmd
Ответ 4
Чтобы устранить эту проблему, используйте дополнительные ключи (-trustcacerts) в командах keytool.
Команда для импорта промежуточных сертификатов из файла intermediate.cer в файл certsks keystore должна выглядеть следующим образом:
keytool -storetype JCEKS -storepass passwd -keystore certificates.ks -import -alias промежуточное -trustcacerts файл intermediate.cer
Команда для импорта сертификата из файла http.cer в файл сертификатов cert.ks должна выглядеть так:
keytool -storetype JCEKS -storepass passwd -keystore certificates.ks -import -alias http -trustcacerts файл http.cer
Повторите попытку завершения процесса создания и импорта подписанного SSL-сертификата.
Ответ 5
Загрузите цепочку сертификатов, откройте ее в Windows - она хранит сертификат CA и ваш сертификат от CA.
Сначала импортируйте CA cert в хранилище ключей, а затем импортируйте ответ из CA.
Ответ 6
Следующий шаг очень важен, прежде чем импортировать сертификаты в локальный магазин ключей. После получения подписанных сертификатов от CA).
импортировать корневой сертификат в cacerts, который будет доступен в папке JAVA_HOME/jre/lib/security, используя следующую команду:
keytool -importcert -alias root -file [корневой сертификат] -keystore cacerts
после ввода команды введите пароль, введите пароль и нажмите "Да".