ошибка keytool: java .lang.Exception: Publi c ключи в ответе и хранилище ключей не соответствуют ошибкам при импорте crt - PullRequest
0 голосов
/ 18 июня 2020

Перед тем, как начать, я рассмотрел еще 2 вопроса:

ошибка keytool: java .lang.Exception: Publi c ключи в ответе и хранилище ключей не совпадают

и

java .lang.Exception: ключи Publi c в ответе и хранилище ключей не совпадают

Но я считаю что ошибка возникает из-за того, как я генерирую csr, который я отправляю своему провайдеру (Digicert). Я подробно опишу свои команды ниже, обратите внимание, что наш отдел всегда делал это именно так, и до этого момента я не могу понять, почему это не работает (я также вообще не уполномочен заниматься администрированием системы, но это приземлился на меня)

Сначала - Создание хранилища ключей

keytool -genkey -alias aliasItem -keyalg RSA -sigalg SHA256withRSA -keysize 2048 -keypass <password> -dname "CN=server.domain.whatever, OU=IT, O=SOME NAME, L=City ST=State C=COUNTRY" -keystore keycerts -storepass <password>

Я изменил важные элементы, как вы могли предположить из соображений безопасности. После этого:

keytool -keycerts -keyalg RSA -sigalg SHA256withRSA -v -alias aliasItem -file outputfile.csr -keystore keycerts 

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

keytool -import -v -alias aliasItem -file <Provider>.crt -keystore keycerts

Который выводит ошибку:

keytool error: java.lang.Exception: Public keys in reply and keystore don't match
java.lang.Exception: Public keys in reply and keystore don't match
        at sun.security.tools.KeyTool.establishCertChain(KeyTool.java:2688)
        at sun.security.tools.KeyTool.installReply(KeyTool.java:1940)
        at sun.security.tools.KeyTool.doCommands(KeyTool.java:855)
        at sun.security.tools.KeyTool.run(KeyTool.java:194)
        at sun.security.tools.KeyTool.main(KeyTool.java:188)

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

Любой ввод будет буду очень признателен.

1 Ответ

0 голосов
/ 19 июня 2020

Вторая команда для генерации автомобиля кажется неверной, потому что "-keycerts" - недопустимый параметр. Это должно быть «-certreq».

Теперь в сообщении об ошибке указано, что закрытый ключ не соответствует сертификату, который вы пытаетесь установить. Пожалуйста, проверьте ниже

a) Убедитесь, что вы пытаетесь использовать тот же файл хранилища ключей, который вы использовали для создания csr

b) Пожалуйста, проверьте при импорте, что вы используете правильный псевдоним . Псевдоним должен совпадать с тем, который вы указали при создании файла хранилища ключей.

c) Убедитесь, что вы импортируете правильный сертификат сервера, а не промежуточный сертификат или root. Digicert должен предоставить вам все три файла, а именно: Сертификат сервера (CN этого сертификата должен совпадать с тем, который был при создании файла csr, и это тот, который необходимо импортировать), Промежуточный и root.

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

...