Пытаемся реализовать проверку УКЭП. Более менее получилось, но не понятно, как это делать правильно.
1. Как правильно определять, что сертификат квалифицированный?
Вот это обсуждение прочитали:
https://www.cryptopro.ru...aspx?g=posts&t=18963 , но хотелось бы более полное техническое описание. Есть ли где-либо таковое?
2. Правильно ли мы поняли, что корневые сертификаты для этого должны быть не все доверенные, которые, например, добавляет CryptoPro CSP при установке, а из определённого перечня (Минкомсвязи, Минцифры)?
3. Если да, то откуда получить авторитетный список таких корневых сертификатов? Сейчас мы пока ходили по сайтам аккредитованных УЦ и собирали их корневые. Но для 40+ аккредитованных практически нереально так сделать.
4. Как правильно определять, что подпись сделана с сертами из п.2?
5. Мы сейчас дёргаем CAdESSigner#getSignatureCertificates ("Получение списка сертификатов подписи после ее декодирования") . Но смущает, что
a) этого метода нет в списке в "Правилах пользования".
б) если добавить дополнительные сертификаты в вызов метода CAdESSignature#verify , то эти дополнительные серты появляются в результате getSignatureCertificates, т.е. получается, что getSignatureCertificates даёт не цепочку сертфикатов (как мы думали), а просто какой-то набор сертификатов, как-то относящихся к подписи.
6. Получается (как из примера в user-samples CRLValidateCert) что единственный нормальный путь определения подписи квалифицированным сертификатом - это получить сертификат через CAdESSigner#getSignerCertificate и затем средствами, не входящими в CryptoPro JCP поиском в глубину с использованием сертификатов из CAdESSigner#getSignatureCertificates строить путь до одного из "правильных" корневых (?)
Отредактировано пользователем 7 декабря 2023 г. 19:59:04(UTC)
| Причина: Не указана