Статус: Активный участник
Группы: Участники
Зарегистрирован: 04.04.2008(UTC) Сообщений: 43 Откуда: Новосибирск
|
Добрый день! Разрабатываем сервер, использующий JTLS. Подскажите пожалуйста, а можно как-нибудь ключ выбирать не первый попавшийся к которому пароль подошел, а сначала контейнер по названию выбрать, потом его пароль проверить?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 04.04.2008(UTC) Сообщений: 43 Откуда: Новосибирск
|
уточню. Создаётся SSLContext: Код:SSLContext sslContext = SSLContext.getInstance("GostSSL");
KeyStore keyStore = KeyStore.getInstance("HDImageStore");
keyStore.load(null, null);
KeyManagerFactory kmf = KeyManagerFactory.getInstance("GostX509");
kmf.init(keyStore, "345");
KeyStore trustedKeyStore = KeyStore.getInstance("HDImageStore");
trustedKeyStore.load(new FileInputStream("JCP.Store"), "123");
TrustManagerFactory tmf = TrustManagerFactory.getInstance("GostX509");
tmf.init(trustedKeyStore);
sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null)
Код работает, но есть две проблемы: 1) берет первsq попавшийся ключ, к которому подходит пароль из хранилища. 2) устанавливает соединение с клиентами с левыми ключами, не имеющими ничего общего с trustedKeyStore
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Здравствуйте. Пока контейнер подбирается только по паролю. Какая у вас версия JCP/JTLS ? |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 04.04.2008(UTC) Сообщений: 43 Откуда: Новосибирск
|
1.0.54. В документации на JCP вижу: Цитата: String alias; // идентификатор (уникальное имя) получаемого ключа ЭП, // установленный при записи ключа на носитель char[] password;// пароль на ключ, установленный при записи ключа на носитель PrivateKey key = (PrivateKey)ks.getKey(alias, password);
Следует отметить некоторые особенности вызова функции getKey():
параметр alias является уникальным именем получаемого ключа ЭП, которое было установлено при записи ключа на носитель. Если на заданном носителе не существует ключа ЭП с передаваемым именем alias, то вызов getKey() вернет null; параметр password представляет собой пароль на запрашиваемый ключ ЭП, который был установлен при записи этого ключа в контейнер. Как отмечалось выше, для карточек (при инициализации ключевого хранилища JCA именем "OCFStore" или "J6CFStore") пароли на все ключи, хранимые на карточке, совпадают с паролем, прошитым в карточке при ее создании. Это работает или нет? Можно это как-то для JTLS заиспользовать?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
А что конкретно? Этот код и есть в JTLS, в частности, в менеджере ключей. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 04.04.2008(UTC) Сообщений: 43 Откуда: Новосибирск
|
Интересует возможность выбора контейнера ключа для JTLS по алиасу. Чтобы можно было в хранилище держать несколько контейнеров с одинаковыми паролями. И выбирать нужный по паролю и имени контейнеру. Подскажите пожалуйста как это правильно сделать.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Автор: afev ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Пока контейнер подбирается только по паролю. Пока никак не сделать. Контекст создается двумя способами: 1) через задание свойств System.setProperty с указанием типа контейнера и пароля; 2) с помощью фабрик типа KeyManagerFactory, TrustManagerFactory и SSLContext, как в вашем примере. Передается keyStore и пароль. В JCP keyStore - это все контейнеры в папке, выбрать один не выйдет. А выбираются они уже в менеджере ключей в JTLS (по паролю). Отредактировано пользователем 8 июля 2015 г. 14:12:33(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 04.04.2008(UTC) Сообщений: 43 Откуда: Новосибирск
|
Цитата:PrivateKey key = (PrivateKey)ks.getKey(alias, password);
А такая инструкция выберет ключ по алиасу или только по паролю?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
По алиасу и паролю. Но вы ее выполнить не сможете до вызова методов SSLContext, точнее, getKey() для KeyStore перед использованием SSLContext ничего не даст. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 04.04.2008(UTC) Сообщений: 43 Откуда: Новосибирск
|
Автор: afev ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) getKey() для KeyStore перед использованием SSLContext ничего не даст. Это понятно, если просто получаю ключ и потом ничего с ним не делаю, то это ничего не даёт. Вопрос в том, что можно же получить ключ по алиасу и паролю и потом как-нибудь, мне не важно как, использовать его для установки гостового TLS-соединения. Неужели нет никакого способа это сделать?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close