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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline maximkosheev  
#1 Оставлено : 27 декабря 2018 г. 21:44:11(UTC)
maximkosheev

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

Группы: Участники
Зарегистрирован: 23.10.2018(UTC)
Сообщений: 36
Российская Федерация

Сказал(а) «Спасибо»: 4 раз
Добрый день! Столкнулся с проблемой получения пути сертификации программным способом.
Вот такой код
Код:

KeyStore keyStore = KeyStore.getInstance("RutokenStore", "JCP");
keyStore.load(null, null);
chain = Arrays.asList(keyStore.getCertificateChain(alias));

Выдает ровно один сертификат (тот, который хранится в хранилище).
Если посмотреть свойства этого сертификата через CSP, то на вкладке "Путь сертификации" можно увидеть все сертификаты, включая конечный, корневой и все промежуточные. Хотелось бы получить эту же информацию, но программным путем. Как можно решить эту задачу?
Offline Евгений Афанасьев  
#2 Оставлено : 27 декабря 2018 г. 22:01:33(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Здравствуйте.
Вероятно, все сертификаты (промежуточные, корневой) у вас установлены в Root, CA, поэтому CSP строит цепочку. JCP использует только на сертификаты в контейнере + возможные переданные через хранилище сертификатов CertStore.
Offline maximkosheev  
#3 Оставлено : 27 декабря 2018 г. 23:20:07(UTC)
maximkosheev

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

Группы: Участники
Зарегистрирован: 23.10.2018(UTC)
Сообщений: 36
Российская Федерация

Сказал(а) «Спасибо»: 4 раз
Как мне поступить в этом случае? Как получить доступ к Root CA (Кстати, как можно посмотреть это) или что-то еще?
Offline Евгений Афанасьев  
#4 Оставлено : 28 декабря 2018 г. 12:19:45(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Автор: maximkosheev Перейти к цитате
Как мне поступить в этом случае? Как получить доступ к Root CA (Кстати, как можно посмотреть это) или что-то еще?

Проще всего создать хранилище формата CertStore или любого другого, добавить в него необходимые сертификаты и строить на его основе цепочку.
К Root, CA и др. системным хранилищам, в частности, в ОС Windows имеет разве что SunMSCAPI от Oracle.
Offline maximkosheev  
#5 Оставлено : 28 декабря 2018 г. 19:37:24(UTC)
maximkosheev

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

Группы: Участники
Зарегистрирован: 23.10.2018(UTC)
Сообщений: 36
Российская Федерация

Сказал(а) «Спасибо»: 4 раз
Разрешите мне рассказать о сути проекта, над которым я работаю. Возможно Вы сможете подсказать решение.
Я разрабатываю программу на Java, по работе с облачным сервисом. В этой задаче необходимо формировать CAdES-подпись некоторых данных. Как формировать такую подпись, я нашел в примере из пакета jcp.
Моя ЭЦП записана на внешний носитель (в моем случае это Rutoken). Первоначально, когда я разбирался в тем самым примером CAdES-подписи, я столкнулся с ошибкой построения правильной цепочки сертификатов, которая решилась импортом всех промежуточных сертификатов (включая корневой) моей ЭЦП в файл JAVA_HOME/lib/security/cacerts. Этот импорт я выполнял утилитой keytool, предварительно сохранив все сертификаты из пути сертификации моей ЭЦП в файлы.
Как я это сделал?
Открыл свойства сертификата своей ЭЦП на внешнем носителе с помощью КриптоПРО-CSP, открыл вкладку "Путь сертификации", и затем последовательно экспортировал все сертификаты из этого пути в файлы.
Теперь мне нужно разработать софт, который будет выполнять туже самую процедуру (импорт всех сертификатов цепочки) но уже на рабочем месте конечного пользователя (у него тоже есть ЭЦП на внешнем носителе), который знать ничего не знает про пути сертификации, утилиту keytool, т.д. Т.е. конечный пользователь должен выбрать сертификат, и софт должен автоматически импортировать все сертификаты в хранилище cacerts.
Подскажите как решить грамотно решить эту задачу.
Offline Евгений Афанасьев  
#6 Оставлено : 28 декабря 2018 г. 20:48:08(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Есть опция "ru.CryptoPro.reprov.enableAIAcaIssuers", посмотрите пример CRLValidateCert из samples-sources.jar последнего дистрибутива jcp. С ее помощью в ходе построения цепочки будут загружены сертификаты цепочки. Правда, в наличии должны быть сертификат клиента (target) и корневой (trustAnchor). Этот параметр использует ссылки на сертификат центра из AIA сертификата, если она там есть.

Отредактировано пользователем 28 декабря 2018 г. 22:05:12(UTC)  | Причина: Не указана

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