Хранилище ключей Java: Как правильно импортировать сертификаты CA?
Мы обновили сертификат одного из наших серверов (apache httpd). Для интерфейса веб-сервиса (для мобильных клиентов) нам нужен сертификат также на tomcat, что означает: хранится в хранилище ключей Java. У нас уже есть наш сертификат в хранилище ключей Java, но корневые сертификаты все еще отсутствуют.
Если мы перечислим детали старого сертификата хранилища ключей, мы получим:
/> keytool -list -v -keystore 2012.jks -alias ourcertificate
Keystore-Kennwort eingeben:
Aliasname: ourcertificate
...
...
...
Zertifikatkettenlänge: 3 // certificate length: 3
Zertifikat[1]: // certificate[1]
...
...
...
Zertifikat[2]:
...
...
...
Zertifikat[3]:
...
...
...
Важно, что все сертификаты CA уже являются частью псевдонима "нашего сертификата" хранилища ключей.
Если мы перечислим детали нового сертификата (нового файла хранилища ключей), мы получим:
/> keytool -list -v -keystore 2015.jks -alias ourcertificate
Keystore-Kennwort eingeben:
Aliasname: ourcertificate
...
...
...
Zertifikatkettenlänge: 1 // certificate length: 1
Zertifikat[1]: // certificate[1]
...
...
...
CA сертификаты здесь отсутствуют. Для импорта сертификатов CA мы пытаемся выполнить следующую команду:
/> keytool -import -alias alpha -file gsalphasha2g2r1.der -keystore 2015.jks
Keystore-Kennwort eingeben:
...
...
...
Diesem Zertifikat vertrauen? [Nein]: Ja // trust this certificate? [No]: Yes
Zertifikat wurde Keystore hinzugefügt // certificate successfully added to keystroe
Но это добавляет новый доверенный сертификат в хранилище ключей (с новым псевдонимом). Также не помогает добавление корневого сертификата. Если мы перечислим детали сертификата в записи "нашего сертификата", мы все равно получим длину сертификата 1. Кроме того, указание "нашего сертификата" при импорте сертификатов CA не помогает (тогда мы получаем ошибку, что открытые ключи в ответе и хранилище ключей не идентично; "Keytool-Fehler: java.lang.Exception: публичные ключи в Antwort und Keystore стимул nicht überein" на немецком языке)
В чем дело? Как мы можем импортировать сертификаты CA в хранилище ключей Java, чтобы сертификаты CA были связаны с "нашим сертификатом"
РЕДАКТИРОВАТЬ
Я думаю, что я должен также описать, как мы импортируем закрытый ключ и пару сертификатов. Это немного сложно, потому что CSR был сделан с openssl. Нам нужно было импортировать закрытый ключ и сертификат в файл хранилища ключей. Для этого мы использовали следующий файл класса Java: http://www.agentbob.info/agentbob/79-AB.html (класс ImportKey). Мы знаем, что это работает. Но может быть при импорте ключа и сертификата произошла ошибка...