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

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline Евгений Афанасьев  
#11 Оставлено : 30 августа 2017 г. 13:37:25(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 688 раз в 649 постах
На сервере требуется аутентификация клиента?
Offline Abter  
#12 Оставлено : 30 августа 2017 г. 13:41:24(UTC)
Abter

Статус: Участник

Группы: Участники
Зарегистрирован: 25.08.2017(UTC)
Сообщений: 15
Казахстан
Откуда: Алматы

Сказал(а) «Спасибо»: 7 раз
Автор: afev Перейти к цитате
На сервере требуется аутентификация клиента?


да стоит двухстороннея аутентификация
Offline Евгений Афанасьев  
#13 Оставлено : 30 августа 2017 г. 14:05:18(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 688 раз в 649 постах
Тогда в sslCtx.init(null, tmf.getTrustManagers(), null); надо передать и KeyManagerFactory с KeyStore. См. руководство разработчика JTLS:
Код:

KeyStore trustStore = KeyStore.getInstance(JCP.CERT_STORE_NAME);
trustStore.load(new FileInputStream(“path_to_trust_store”), “trust_store_password”.toCharArray()); // хранилище корневых сертификатов

// Если контекст для сервера или для клиента с аутентификацией
if (isServer || clientNeedsAuth) {

  KeyManagerFactory kmf = KeyManagerFactory.getInstance("GostX509");
  KeyStore keyStore = KeyStore.getInstance(JCP.HD_STORE_NAME);

  keyStore.load(null, null);
  kmf.init(keyStore, “key_store_password”.toCharArray()); // Пароль к контейнеру

} // if

TrustManagerFactory tmf = TrustManagerFactory.getInstance("GostX509");
tmf.init(trustStore);

SSLContext sslCtx = SSLContext.getInstance("GostTLS"); // Защищенный контекст
sslCtx.init(kmf != null ? kmf.getKeyManagers() : null, tmf.getTrustManagers(), null);

Если вы используете JCSP, то, соответственно, должен быть указан нужный тип и провайдер keyStore.

Отредактировано пользователем 30 августа 2017 г. 14:06:18(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Abter оставлено 31.08.2017(UTC)
Offline Abter  
#14 Оставлено : 31 августа 2017 г. 7:33:59(UTC)
Abter

Статус: Участник

Группы: Участники
Зарегистрирован: 25.08.2017(UTC)
Сообщений: 15
Казахстан
Откуда: Алматы

Сказал(а) «Спасибо»: 7 раз
Автор: afev Перейти к цитате
Тогда в sslCtx.init(null, tmf.getTrustManagers(), null); надо передать и KeyManagerFactory с KeyStore. См. руководство разработчика JTLS:
Код:

KeyStore trustStore = KeyStore.getInstance(JCP.CERT_STORE_NAME);
trustStore.load(new FileInputStream(“path_to_trust_store”), “trust_store_password”.toCharArray()); // хранилище корневых сертификатов

// Если контекст для сервера или для клиента с аутентификацией
if (isServer || clientNeedsAuth) {

  KeyManagerFactory kmf = KeyManagerFactory.getInstance("GostX509");
  KeyStore keyStore = KeyStore.getInstance(JCP.HD_STORE_NAME);

  keyStore.load(null, null);
  kmf.init(keyStore, “key_store_password”.toCharArray()); // Пароль к контейнеру

} // if

TrustManagerFactory tmf = TrustManagerFactory.getInstance("GostX509");
tmf.init(trustStore);

SSLContext sslCtx = SSLContext.getInstance("GostTLS"); // Защищенный контекст
sslCtx.init(kmf != null ? kmf.getKeyManagers() : null, tmf.getTrustManagers(), null);

Если вы используете JCSP, то, соответственно, должен быть указан нужный тип и провайдер keyStore.


ок, добавил keyManagers, ошибка та же: WARNING: main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

лог приложил.
log_31_08.txt (55kb) загружен 4 раз(а).

вот код java:
java.txt (3kb) загружен 9 раз(а).

Я думаю что у меня хранилище сертификатов не правильно сделаны я их через консоль сам создавал, а мне выдали папку с ключами и клиентским сертификатом и корневой сертификат. Скажите пож-та как правильно я их должен положить/создать хранилище через CSP, я так понимаю KeyStore.getInstance(JCP.HD_STORE_NAME) по паролю должен сам обратиться к папке но я не делал папку с таким паролем.

в заранее Спасибо!

Отредактировано пользователем 31 августа 2017 г. 8:17:46(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#15 Оставлено : 31 августа 2017 г. 9:46:31(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 688 раз в 649 постах
Задание хранилища доверенных сертификатов с помощью System.setProperty лишнее - его достаточно передать в SSLContext.
keystore - Это хранилище доверенных сертификатов?
Хранилище доверенных сертификатов формата CerStore можно создать в панели JCP и положить в него корневой сертификат.
Ключевой контейнер (папка *.000) должна быть доступна JCP и лежать в его папке контейнеров: C:\Users\<user>\AppData\Crypto Pro или /var/opt/cprocsp/keys/<user>. Пароль на контейнер должен быть password (из вашего примера), раз он один и тот же для хранилища доверенных сертификатов и контейнера.
Offline Abter  
#16 Оставлено : 31 августа 2017 г. 13:31:27(UTC)
Abter

Статус: Участник

Группы: Участники
Зарегистрирован: 25.08.2017(UTC)
Сообщений: 15
Казахстан
Откуда: Алматы

Сказал(а) «Спасибо»: 7 раз
Автор: afev Перейти к цитате
Задание хранилища доверенных сертификатов с помощью System.setProperty лишнее - его достаточно передать в SSLContext.
keystore - Это хранилище доверенных сертификатов?
Хранилище доверенных сертификатов формата CerStore можно создать в панели JCP и положить в него корневой сертификат.
Ключевой контейнер (папка *.000) должна быть доступна JCP и лежать в его папке контейнеров: C:\Users\<user>\AppData\Crypto Pro или /var/opt/cprocsp/keys/<user>. Пароль на контейнер должен быть password (из вашего примера), раз он один и тот же для хранилища доверенных сертификатов и контейнера.


1) System.setProperty убрал
2) keyStore это не хранилище доверенных сертификатов, это Ключевой контейнер который берет из HD_STORE_NAME, хранилище доверенных сертификатов это trustStore: KeyStore trustStore = KeyStore.getInstance(JCP.CERT_STORE_NAME, JCP.PROVIDER_NAME);
3) можно пож-та скинуть ссылку на документацию как в JCP или в CSP создавать хранилище доверенных сертификатов формата CerStore? там должен быть только корневой сертификат (root.cer) или клиентский (client.cer) тоже?
4) можно пож-та скинуть ссылку на документацию как создавать Ключевой контейнер и как понять папка*.000? у меня обычный каталог с наличием файлов .cer и файлов .key
Offline Евгений Афанасьев  
#17 Оставлено : 31 августа 2017 г. 13:55:52(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 688 раз в 649 постах
Автор: Abter Перейти к цитате

2) keyStore это не хранилище доверенных сертификатов, это Ключевой контейнер который берет из HD_STORE_NAME, хранилище доверенных сертификатов это trustStore: KeyStore trustStore = KeyStore.getInstance(JCP.CERT_STORE_NAME, JCP.PROVIDER_NAME);
3) можно пож-та скинуть ссылку на документацию как в JCP или в CSP создавать хранилище доверенных сертификатов формата CerStore? там должен быть только корневой сертификат (root.cer) или клиентский (client.cer) тоже?
4) можно пож-та скинуть ссылку на документацию как создавать Ключевой контейнер и как понять папка*.000? у меня обычный каталог с наличием файлов .cer и файлов .key

2. переменная keystore.
3-4. - см. руководства программиста и руководство программиста JTLS (дистрибутив, папка Docs/ЖТЯИ-). Хранилище доверенных сертификатов формата CerStore с паролем можно создать в панели JCP на закладке "Хранилища ключей и сертификатов" и положить в него корневой сертификат. Ключевой контейнер (папка *.000) должен быть доступен JCP и лежать в его папке контейнеров: C:\Users\<user>\AppData\Crypto Pro (/var/opt/cprocsp/keys/<user>). У него также должен быть пароль. Ваш каталог и есть контейнер. Поместите его в C:\Users\<user>\AppData\Crypto Pro (/var/opt/cprocsp/keys/<user>), тогда он будет доступен в панели управления JCP.




thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Abter оставлено 31.08.2017(UTC)
Offline Abter  
#18 Оставлено : 31 августа 2017 г. 14:41:08(UTC)
Abter

Статус: Участник

Группы: Участники
Зарегистрирован: 25.08.2017(UTC)
Сообщений: 15
Казахстан
Откуда: Алматы

Сказал(а) «Спасибо»: 7 раз
Автор: afev Перейти к цитате
Автор: Abter Перейти к цитате

2) keyStore это не хранилище доверенных сертификатов, это Ключевой контейнер который берет из HD_STORE_NAME, хранилище доверенных сертификатов это trustStore: KeyStore trustStore = KeyStore.getInstance(JCP.CERT_STORE_NAME, JCP.PROVIDER_NAME);
3) можно пож-та скинуть ссылку на документацию как в JCP или в CSP создавать хранилище доверенных сертификатов формата CerStore? там должен быть только корневой сертификат (root.cer) или клиентский (client.cer) тоже?
4) можно пож-та скинуть ссылку на документацию как создавать Ключевой контейнер и как понять папка*.000? у меня обычный каталог с наличием файлов .cer и файлов .key

2. переменная keystore.
3-4. - см. руководства программиста и руководство программиста JTLS (дистрибутив, папка Docs/ЖТЯИ-). Хранилище доверенных сертификатов формата CerStore с паролем можно создать в панели JCP на закладке "Хранилища ключей и сертификатов" и положить в него корневой сертификат. Ключевой контейнер (папка *.000) должен быть доступен JCP и лежать в его папке контейнеров: C:\Users\<user>\AppData\Crypto Pro (/var/opt/cprocsp/keys/<user>). У него также должен быть пароль. Ваш каталог и есть контейнер. Поместите его в C:\Users\<user>\AppData\Crypto Pro (/var/opt/cprocsp/keys/<user>), тогда он будет доступен в панели управления JCP.






спасибо многое прояснилось, последний вопрос (надеюсь :)) вы пишите у ключевого контейнера должен быть пароль? а какой пароль? кто и как его задает? на счтет C:\Users\<user>\AppData\Crypto Pro проверил такой каталог в нем есть каталог ****.000 он пустой я его не создавал ранее, дата создания сегодня видимо при запуске тестовых как то создался, туда положил все файлы формата .key, запустил еще раз приложение получил такую ошибку: Message: java.lang.ClassCastException: ru.CryptoPro.JCP.Key.GostExchPrivateKey cannot be cast to ru.CryptoPro.JCSP.Key.GostPrivateKey

вот лог: log_31_08.txt (93kb) загружен 3 раз(а).
Offline Евгений Афанасьев  
#19 Оставлено : 31 августа 2017 г. 15:33:48(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 688 раз в 649 постах
Автор: afev Перейти к цитате
Если вы используете JCSP, то, соответственно, должен быть указан нужный тип и провайдер keyStore.

Судя по логу, вы используете JCSP. Видимо, где-то все-таки применяется JCP вместо JCSP (например, при чтении KeyStore).


Offline Abter  
#20 Оставлено : 31 августа 2017 г. 15:47:53(UTC)
Abter

Статус: Участник

Группы: Участники
Зарегистрирован: 25.08.2017(UTC)
Сообщений: 15
Казахстан
Откуда: Алматы

Сказал(а) «Спасибо»: 7 раз
Автор: afev Перейти к цитате
Автор: afev Перейти к цитате
Если вы используете JCSP, то, соответственно, должен быть указан нужный тип и провайдер keyStore.

Судя по логу, вы используете JCSP. Видимо, где-то все-таки применяется JCP вместо JCSP (например, при чтении KeyStore).




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