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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Алексей Вдовин  
#1 Оставлено : 29 января 2025 г. 17:55:16(UTC)
Алексей Вдовин

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

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

Сказал(а) «Спасибо»: 78 раз
Поблагодарили: 1 раз в 1 постах
формирую цепочку сертификатов таким образом

Код:

            byte[] fileContent = file.getBytes();
            byte[] signatureContent = signature.getBytes();

            CAdESSignature cadesToVerify = new CAdESSignature(signatureContent, fileContent, null);

            CAdESSigner[] signers = cadesToVerify.getCAdESSignerInfos();
            for (int i = 0; i < signers.length; i++) {
                CAdESSigner signer = signers[i];
                X509Certificate certificate = signer.getSignerCertificate();
                chain.add(certificate);
            }
            cadesToVerify.verify(chain);


при проверке получаю исключение

Цитата:

Error occurred during building the certification path for the target:
serial: 2880a4700bab06f8247ae9c20df094812
subject: .................
issuer: CN=Федеральная налоговая служба, O=Федеральная налоговая служба, STREET="ул. Неглинная, д. 23", L=г. Москва, ST=77 Москва, C=RU, OID.1.2.643.100.1=#120d31303437373037303330353133, EMAILADDRESS=uc@tax.gov.ru, OID.1.2.643.100.4=#120a37373037333239313532
not before: Tue Nov 14 11:08:39 NOVT 2023
not after: Fri Feb 14 11:18:39 NOVT 2025
signature provider: JCP
validation date: null
native implementation: true
: unable to find valid certification path to requested target


я так полагаю ругается на неправильную цепочку

дебагом посмотрел - он только один сертификат туда поместил, непосредственно подписанта
а надо ведь и корневой и промежуточный

как их из CAdESSignature получить?

или их уже из самого сертификата подписанта надо выдёргивать? или вообще всю цепочку из него?

Отредактировано пользователем 29 января 2025 г. 18:11:51(UTC)  | Причина: Не указана

Wanna join the discussion?! Login to your Форум КриптоПро forum account. Новые регистрации запрещены.

Offline Евгений Афанасьев  
#2 Оставлено : 30 января 2025 г. 0:55:59(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 725 раз в 684 постах
Добрый день.
Таким способом вы не цепочку формируете, а получаете из каждого подписанта один его сертификат подписи.
Насколько я знаю, готового метода получения цепочки в CAdESSignature нет.
С какой целью требуется цепочка?
Offline Алексей Вдовин  
#3 Оставлено : 30 января 2025 г. 5:07:56(UTC)
Алексей Вдовин

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

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

Сказал(а) «Спасибо»: 78 раз
Поблагодарили: 1 раз в 1 постах
Автор: Евгений Афанасьев Перейти к цитате
С какой целью требуется цепочка?


цепочка требуется с целью проверки - т.е. вызова verify(chain)

по самой цепочке вопрос - в методе verify(chain) chain это именно вся цепочка - корневой, промежуточный, подписанта?
или только подписанта?
(мне в чате pro.jvm сказали, что корневой, промежуточный просто должны лежать в trusted и всё - сами подхватиться должны)



пользователь подгружает в приложение подписанный файл - нужно проверить валидность ЭЦП (в том числе на предмет аккредитованного УЦ, списка отозванных сертификатов)
сейчас я реализовал с помощью установки опций

System.setProperty("com.sun.security.enableCRLDP", "true");
System.setProperty("com.ibm.security.enableCRLDP", "true");
System.setProperty("com.sun.security.enableAIAcaIssuers", "true");

и вызова
CAdESSignature cadesToVerify = new CAdESSignature(signatureContent, fileContent, null);
cadesToVerify.verify(null);

проверяет, но для ЭЦП подписанных ФНС - это очень долгая операция (более 50 секунд), поэтому я решил задействовать метод с цепочкой и списком отозванных сертификатов
cadesToVerify.verify(chain, crlList);

собственно вопросы:
1. как из файла с подписью (прикрепленная или открепленная) получить необходимую для verify() цепочку?
2. как получить список отозванных

и главный момент - на сколько я понимаю проверка будет работать, только если корневой и промежуточные сертификаты загружены в cacests (trusted хранилища)
т.е. ещё вопрос

3. как загрузить в хранилище все аккредитованные УЦ



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