logo Обзор КриптоПро NGate для защищённого доступа к корпоративным ресурсам
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline maximkosheev  
#1 Оставлено : 29 августа 2019 г. 12:12:44(UTC)
maximkosheev

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

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

Сказал(а) «Спасибо»: 4 раз
Добрый день!
Возникла следующая задача: добавить в cacerts java информацию о сертификатах, входящих в цепочку.
Как бы я решал эту задачу вручную:
1. С помощью оснастки "Сертификаты" получил бы цепочку сертификатов (последний закрашенный - мой)
Путь сертификации моего сертификата
2. Выбрал нужный сертификат, например выше стоящий "АО "ПФ "СКБ КОНТУР"
3. Нажал на "Просмотр сертификата"
4. На аналогичном окне свойств сертификата, но уже для "АО "ПФ "СКБ КОНТУР" на вкладке "Состав" нажал бы "Копировать в файл"
5. Запустился бы мастер экспорта сертификата
6. Выбрал бы тип файла, например "Файлы X.509(.CER) в кодировке DER" и получил бы готовый файл *.cer
7. С помощью утилиты keytool из пакета JRE/JDK импортировал этот файл *.cer в доверенное хранилище cacerts.

Выполнив эти действия для всех сертификатов в цепочке, я получил бы то, что мне нужно.

Вопрос в том как выполнить действия программно с помощью JCA + JCP (хотябы получить цепочку и экспортировать в файлы) без мастеров Windows?

Буду благодарен за любую помощь или направление куда "копать".
Offline Евгений Афанасьев  
#2 Оставлено : 29 августа 2019 г. 12:59:13(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 385 раз в 380 постах
Здравствуйте.
Примеры построения и проверки цепочки сертификатов можно найти в samples-sources.jar (в дистрибутиве jcp), файлы OCSPValidateCert и CRLValidateCert. В CRLValidateCert построение осуществляется с помощью CertPathBuilder.build() (дальнейшая часть с validate не требуется, если только построение), при этом должен быть задан доверенный корневой сертификат (либо как сертификат, либо открытый ключ с издателем, см. описание TrustAnchor). target-сертификат - ваш сертификат. Промежуточных может не быть, но, чтобы цепочка была построена
1) ссылки на них должны быть в сертификатах (для примера client-CA2-CA1-root: в client - ссылка на промежуточный CA2, в CA2 - ссылка на промежуточный CA1);
2) должен быть задан параметр System.setProperty("ru.CryptoPro.reprov.enableAIAcaIssuers", "true"), если используется CertPathBuilder.getInstance("CPPKIX", "RevCheck").
В этом случае и при наличии доступа к сети промежуточные сертификаты будут загружены, вся цепочка будет доступна в PKIXCertPathBuilderResult. Далее можно сохранять getEncoded() сертификата.

Отредактировано пользователем 29 августа 2019 г. 13:00:34(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline maximkosheev  
#3 Оставлено : 11 сентября 2019 г. 20:47:27(UTC)
maximkosheev

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

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

Сказал(а) «Спасибо»: 4 раз
Отчасти помогло, но вот что не понятно.
Мой сертификат я могу вытянуть программно с токена - в этой части проблем возникнуть не должно.
А вот как получить корневой доверенный сертификат?
Как вы правильно заметили
Цитата:
при этом должен быть задан доверенный корневой сертификат (либо как сертификат, либо открытый ключ с издателем, см. описание TrustAnchor)
он должен быть.
В примере CRLValidateCert он задается в виде root.cer:
Код:
Certificate root = cf.generateCertificate(new FileInputStream(PATH + "root.cer"));

С помощью мастера экспорта сертификатов Windows получить root.cer можно без проблем. А вот как получить root.cer программно?
Offline Евгений Афанасьев  
#4 Оставлено : 11 сентября 2019 г. 22:24:51(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 385 раз в 380 постах
Мастером Windows он выгружается, потому что есть в хранилище (был установлен туда) или ссылка на него есть в предыдущем сертификате. Иначе мастер его не сможет выгрузить, так как неоткуда. В случае с явой trust anchors должны быть заданы, то есть придётся найти в интернете корневые сертификаты и установить в cacerts, иное хранилище или в виде файлов сохранить. На форуме где-то были ссылки на основные корневые сертификаты.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.