Исключение рукопожатия ssl из-за файла хранилища ключей

У меня есть запрос, где мне нужно записать содержимое в БД из приложения, работающего на сервере A, к тому же приложению, запущенному на другом сервере экземпляра B.

Чтение и запись в БД через SOAP API

Оба сервера имеют свой собственный файл client.truststore.

С автономного сервера C, используя client.trustsrore сервера A, я могу читать и записывать данные в базу данных сервера A, а с помощью хранилища доверенных сертификатов клиента B могу читать и записывать данные в базу данных сервера B.

Поскольку требуется прочитать данные с сервера A и записать их на сервер B. Я ввел новый файл хранилища ключей на обоих серверах и правильно установил system.properties (местоположение хранилища ключей и пароль). и это хранилище ключей было правильно скопировано на оба сервера с разрешениями.

Я создал сертификат с помощью закрытого ключа, а затем создал файл хранилища ключей с помощью команды keytool.

Так как хранение файла хранилища ключей на 2 сервере не работало. Он всегда жаловался на unknown_certificate. Я попытался импортировать сертификат в cacerts в /$JAVA_HOME/lib/security/. Но даже это дает неизвестный сертификат с исключением рукопожатия.

Есть ли что-то еще, что я хочу сделать, чего мне не хватает?

С уважением
Дирадж Джоши

2 ответа

Решение

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

Вы должны ввести действительное имя хоста в процессе создания сертификата, когда вас попросят указать ваше имя и фамилию:

What is your first and last name?
[Unknown]:  myserver.domain.com

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

Хорошо, решение было простым. Создайте новый магазин, используя сертификаты двух серверов

keytool -import -alias <alias> --keystore <newstore> -file server1.crt -storepass changeit
keytool -import -alias <alias> --keystore <newstore> -file server2.crt -storepass changeit

Теперь магазин новостей можно использовать для связи SSL.

С уважением
Дирадж Джоши

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