Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline Cynepnaxa  
#1 Оставлено : 8 июля 2015 г. 11:40:49(UTC)
Cynepnaxa

Статус: Активный участник

Группы: Участники
Зарегистрирован: 04.04.2008(UTC)
Сообщений: 43
Откуда: Новосибирск

Добрый день!
Разрабатываем сервер, использующий JTLS. Подскажите пожалуйста, а можно как-нибудь ключ выбирать не первый попавшийся к которому пароль подошел, а сначала контейнер по названию выбрать, потом его пароль проверить?

Offline Cynepnaxa  
#2 Оставлено : 8 июля 2015 г. 12:15:56(UTC)
Cynepnaxa

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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
Offline Евгений Афанасьев  
#3 Оставлено : 8 июля 2015 г. 12:44:14(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,003
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Здравствуйте.
Пока контейнер подбирается только по паролю.
Какая у вас версия JCP/JTLS ?
Offline Cynepnaxa  
#4 Оставлено : 8 июля 2015 г. 13:28:19(UTC)
Cynepnaxa

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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 заиспользовать?
Offline Евгений Афанасьев  
#5 Оставлено : 8 июля 2015 г. 13:31:54(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,003
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
А что конкретно? Этот код и есть в JTLS, в частности, в менеджере ключей.
Offline Cynepnaxa  
#6 Оставлено : 8 июля 2015 г. 14:02:02(UTC)
Cynepnaxa

Статус: Активный участник

Группы: Участники
Зарегистрирован: 04.04.2008(UTC)
Сообщений: 43
Откуда: Новосибирск

Интересует возможность выбора контейнера ключа для JTLS по алиасу. Чтобы можно было в хранилище держать несколько контейнеров с одинаковыми паролями. И выбирать нужный по паролю и имени контейнеру. Подскажите пожалуйста как это правильно сделать.
Offline Евгений Афанасьев  
#7 Оставлено : 8 июля 2015 г. 14:11:30(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,003
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Автор: afev Перейти к цитате
Пока контейнер подбирается только по паролю.

Пока никак не сделать.
Контекст создается двумя способами:
1) через задание свойств System.setProperty с указанием типа контейнера и пароля;
2) с помощью фабрик типа KeyManagerFactory, TrustManagerFactory и SSLContext, как в вашем примере. Передается keyStore и пароль. В JCP keyStore - это все контейнеры в папке, выбрать один не выйдет. А выбираются они уже в менеджере ключей в JTLS (по паролю).

Отредактировано пользователем 8 июля 2015 г. 14:12:33(UTC)  | Причина: Не указана

Offline Cynepnaxa  
#8 Оставлено : 8 июля 2015 г. 14:20:57(UTC)
Cynepnaxa

Статус: Активный участник

Группы: Участники
Зарегистрирован: 04.04.2008(UTC)
Сообщений: 43
Откуда: Новосибирск

Цитата:
PrivateKey key = (PrivateKey)ks.getKey(alias, password);

А такая инструкция выберет ключ по алиасу или только по паролю?
Offline Евгений Афанасьев  
#9 Оставлено : 8 июля 2015 г. 14:22:59(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,003
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
По алиасу и паролю. Но вы ее выполнить не сможете до вызова методов SSLContext, точнее, getKey() для KeyStore перед использованием SSLContext ничего не даст.
Offline Cynepnaxa  
#10 Оставлено : 9 июля 2015 г. 6:17:40(UTC)
Cynepnaxa

Статус: Активный участник

Группы: Участники
Зарегистрирован: 04.04.2008(UTC)
Сообщений: 43
Откуда: Новосибирск

Автор: afev Перейти к цитате
getKey() для KeyStore перед использованием SSLContext ничего не даст.

Это понятно, если просто получаю ключ и потом ничего с ним не делаю, то это ничего не даёт. Вопрос в том, что можно же получить ключ по алиасу и паролю и потом как-нибудь, мне не важно как, использовать его для установки гостового TLS-соединения. Неужели нет никакого способа это сделать?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.