2015-08-17 4 views
3

Я хотел бы знать, как я могу переименовать псевдоним хранилища ключей, программно в java, не используя keytool.Переименовать псевдоним JKS с помощью java программно

У меня есть мой объект java.security.KeyStore, содержащий определенный псевдоним. Как я могу переименовать его?

+0

Почему? Что вам не нравится, что такое псевдоним? – EJP

+0

@EJP внутренние реквизиты – Yuri

ответ

2

API KeyStore не предоставляет операцию переименования псевдонимов. Но что вы можете сделать:

  1. Сохраните содержимое (пара ключей, сертификаты) записи в хранилище ключей, которую вы хотите переименовать.
  2. Удалить запись.
  3. Создайте новую запись с сохраненным контентом и новым псевдонимом.

В Java-код:

Key privateKey = keyStore.getKey(alias, password.toCharArray()); 
Certificate[] certs = keyStore.getCertificateChain(alias); 
keyStore.setKeyEntry(newAlias, privateKey, password.toCharArray(), certs); 
keyStore.deleteEntry(alias); 

Конечно, это не работает, если закрытый ключ хранится на аппаратном устройстве (смарт-карты или HSM) и, следовательно, не может быть прочитан.

Если запись содержит хранилище ключей доверенный сертификат, код выглядит несколько иначе:

Certificate cert = keyStore.getCertificate(alias); 
keyStore.setCertificateEntry(newAlias, cert); 
keyStore.deleteEntry(alias); 
+0

Спасибо, все отлично! – Yuri

Смежные вопросы