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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Yuopnt  
#1 Оставлено : 13 декабря 2016 г. 16:03:30(UTC)
Yuopnt

Статус: Новичок

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

Проблема такая,пишу клиента для аутентификации на сервере . Есть контейнер ключей вида name-.000\ + в этой же папке лежит сертификат name.cer. В панели JCP эта папка (name-.000) отображается в хранилище контейнеров,открывается HDImageStore-в ней ключ и сертификат. В хранилище сертификатов CertStore ничего нет.
Версия JCP -jcp-2.0.37748. JTLS также установлен ( в ControlPanel есть вкладка сервер JTLS)
В java.security (если я правильно поняла из форума),нужно поставить вперед
security.provider.1=ru.CryptoPro.JCP.JCP
security.provider.2=ru.CryptoPro.Crypto.CryptoProvider
security.provider.3=ru.CryptoPro.reprov.RevCheck
security.provider.4=ru.CryptoPro.ssl.Provider

+keystore.type=HDImageStore
+ssl.KeyManagerFactory.algorithm=GostX509
ssl.TrustManagerFactory.algorithm=GostX509
В коде пишем

Код:
 
                System.setProperty("com.sun.security.enableCRLDP", "true");
                System.setProperty("com.ibm.security.enableCRLDP", "true");
                System.setProperty("javax.net.ssl.supportGVO", "true");
		System.setProperty("javax.net.debug", "all");
		Security.setProperty("ssl.TrustManagerFactory.algorithm" , "GostX509");
		Security.setProperty("ssl.KeyManagerFactory.algorithm", "GostX509");
		Security.setProperty("ssl.SocketFactory.provider", "ru.CryptoPro.ssl.SSLSocketFactoryImpl");
		Security.setProperty("ssl.ServerSocketFactory.provider", "ru.CryptoPro.ssl.SSLServerSocketFactoryImpl");
        
		System.setProperty("javax.net.ssl.keyStoreProvider", "JCP");
		System.setProperty("javax.net.ssl.keyStoreType", "HDImageStore");
		System.setProperty("javax.net.ssl.keyStore", "d:\\Temp\\HDImage"); //тут лежит папка name-.000
		System.setProperty("javax.net.ssl.keyStorePassword","12345678"); 

Выходит ошибка (текст ниже)

Вопросы
1. Из ошибки правильно ли я понимаю,что берет не тот сертификат ( не наш,а SUN). если так,что нам надо сделать ,чтобы брался наш сертификат.
2. Сертификат нужно положить в CertStore ? пытаюсь сделать это через панель Хранилища сертификатов- создать. панель зависает и все,добавить никак не получается.
3. Что-то не так указали в коде? keyStore не достаточно ?
Offline Yuopnt  
#2 Оставлено : 13 декабря 2016 г. 16:07:10(UTC)
Yuopnt

Статус: Новичок

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


Offline Евгений Афанасьев  
#3 Оставлено : 13 декабря 2016 г. 17:11:51(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Здравствуйте.
Автор: Yuopnt Перейти к цитате

В хранилище сертификатов CertStore ничего нет.
1. Из ошибки правильно ли я понимаю,что берет не тот сертификат ( не наш,а SUN). если так,что нам надо сделать ,чтобы брался наш сертификат.
2. Сертификат нужно положить в CertStore ? пытаюсь сделать это через панель Хранилища сертификатов- создать. панель зависает и все,добавить никак не получается.
3. Что-то не так указали в коде? keyStore не достаточно ?

Хранилище доверенных сертификатов должно быть непустым: в него нужно поместить корневой сертификат УЦ (и промежуточные, если есть), выпустившего сертификат сервера, куда подключаетесь.
1. Первая ошибка в в том, что нет хранилища доверенных сертификатов.
На счет сертификата - сервер присылает список сайферсюит в блоке ClientHello, и в нем нет ГОСТовых сайферсюит (типа GOST_CIPHER_2001, GOST_CIPHER_2012 и т.п.). Возможно, на сервере на указанном порту не настроена ГОСТ-аутентификация. После создания хранилища сертификатов, скорее всего, будет ошибка HANDSHAKE_FAILURE.
2. Да, корневой сертификат УЦ (и промежуточные, если есть), выпустившего сертификат сервера, нужно поместить в созданное хранилище доверенных сертификатов. Создать его можно в панели JCP на закладке "Хранилища ключей и сертификатов", внизу закладки. Выделить "Хранилища сертификатов", создать хранилище, задать пароль, добавить в него сертификат(ы).
3. Если на сервере включена клиентская аутентификация, то потребуется контейнер клиента с сертификатом с политикой "для аутентификации клиента". Пароль на контейнер должен совпадать с паролем на хранилище доверенных сертификатов.
---
4. System.setProperty("javax.net.ssl.keyStore", "d:\\Temp\\HDImage"); не нужен, т.к. контейнер в случае JCP - это папка, указать путь к нему нельзя. Поиск контейнера осуществляется по паролю (keyStorePassword).

Отредактировано пользователем 13 декабря 2016 г. 17:14:03(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.