Как интегрировать файлы хранилища ключей в мой код Java, чтобы потреблять мыльный веб-сервис [duplicate]

26
задан MetroidFan2002 18 October 2011 в 20:17
поделиться

3 ответа

Итак, вот мой процесс:

keytool -list -v -keystore permanent.jks - получил псевдоним.

keytool -export -alias alias_name -file certificate_name -keystore permanent.jks - получил мне сертификат для импорта.

Тогда я мог бы импортировать его с помощью keytool:

keytool -import -alias alias_name -file certificate_name -keystore keystore location

Поскольку @Christian Bongiorno говорит, что псевдоним уже не существует в вашем хранилище ключей.

37
ответ дан ChristiaanP 15 August 2018 в 23:28
поделиться
  • 1
    Я получил его работу, но с изменением (если вы хотите изменить свой ответ). В процессе импорта часть, в которой у вас есть «псевдоним», (BTW: не большое имя переменной с пробелом), это должно быть псевдоним, который еще не существует в хранилище адресатов. Если вы не укажете псевдоним, который он по умолчанию имеет значение «1», - вы можете использовать шаг 1 для перечисления псевдонимов из вашего пункта назначения перед установкой – Christian Bongiorno 3 July 2013 в 01:34
  • 2
    На последнем этапе (импорт) я получил ошибку keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect, хотя предыдущий шаг (экспорт), я могу успешно завершить свой пароль. Вы знаете, почему это так? – Thai Tran 24 August 2014 в 00:33
  • 3
    @ThaiTran Для будущих читателей при импорте сертификата обязательно используйте пароль целевого файла сертификата, а не пароль, используемый для создания сертификата в первую очередь. Также обратите внимание, что на многих системах JDK принадлежит root. Если это так, вам нужно выполнить команду keytool -import как root. – BRasmussen 3 August 2017 в 17:25
  • 4
    Для других будущих читателей, получавших IOException, пароль по умолчанию для cacerts - «changeit». – Luke 23 August 2017 в 20:26
  • 5
    Хорошо, это действительно сработало. Однако мои "постоянные.jks" содержал как 5 различных сертификатов. Поэтому после keytool -list -v -keystore constant.jks .. cmd + f & quot; псевдоним & quot; найти все псевдонимы и экспортировать их один за другим. И затем после 5 отдельных файлов .cer я смог добавить их в cacerts (также один bye один после справки здесь). Благодаря! – kristjan reinhold 21 March 2018 в 10:46

, чтобы загрузить KeyStore, вам нужно указать ему тип хранилища ключей (вероятно, jceks), предоставить входной поток и пароль. то вы можете загрузить его так:

KeyStore ks  = KeyStore.getInstance(TYPE_OF_KEYSTORE);
ks.load(new FileInputStream(PATH_TO_KEYSTORE), PASSWORD);

это может вызвать исключение KeyStoreException, поэтому вы можете окружать блок try, если хотите, или повторно бросить. Имейте в виду, что хранилище ключей может содержать несколько ключей, поэтому вам нужно найти свой ключ с псевдонимом, вот пример с симметричным ключом:

SecretKeyEntry entry = (KeyStore.SecretKeyEntry)ks.getEntry(SOME_ALIAS,new KeyStore.PasswordProtection(SOME_PASSWORD));
SecretKey someKey = entry.getSecretKey();
26
ответ дан Paul Sanwald 15 August 2018 в 23:28
поделиться
  • 1
    Вы спасли мою жизнь. Не загружала хранилище ключей должным образом, пока я не пришел к вашему примеру. Жаль, что я не могу дать вам 10000 очков за это. Большое спасибо!! – raspayu 11 November 2013 в 12:42
  • 2
    рад помочь! ваша благодарность стоит больше, чем несколько баллов :). – Paul Sanwald 11 November 2013 в 20:41
  • 3
    Привет, ваш код, хорошо сформулированный с помощью SHA1RSA, вы можете помочь загрузить KeyStore SHA256RSA, он говорит «Недопустимый формат хранилища ключей». – Hoang Tran 28 June 2018 в 02:03

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

keytool -importkeystore -srckeystore source.jks -destkeystore dest.jks
17
ответ дан qwertzguy 15 August 2018 в 23:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: