Статус: Участник
Группы: Участники
Зарегистрирован: 29.10.2013(UTC) Сообщений: 10
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 1 раз в 1 постах
|
Из detached подписи можно как-то извлечь сертификат (объект java.security.cert.Certificate)? В примере CMS.java сертификат передается в функцию CMSVerify, а не извлекается из самой подписи (считанной из Array.readFile(CMS_FILE_D_PATH)). Но ведь сертификат должен передаваться вместе с подписью. Насколько я понимаю, detached подпись должна содержать этот сертификат. UPDATE: Судя по коду функции CMSVerify, массив сертификатов находится в cms.certificates. Как правильно выбрать из этого массива тот сертификат, который использовался для подписи? Будет ли он первым или последним в этом массиве? Отредактировано пользователем 31 октября 2013 г. 17:17:56(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,004 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
В CMSVerify происходит проверка ЭЦП всеми сертификатами в подписи. Сертификатом подписи признается тот, на котором проверка ЭЦП успешна. Кроме того, в подпись можно поместить sid сертификата подписи, в подписанные атрибуты (см. CAdES-BES) - тогда точно можно будет узнать, на каком сертификате осуществлять проверку. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 14.03.2011(UTC) Сообщений: 153 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) Откуда: Санкт-Петербург Сказал «Спасибо»: 1 раз Поблагодарили: 7 раз в 5 постах
|
Вот, честно, не понимаю я логики работы с PKCS#7 в JCP. Может, сейчас, в новых версиях что-то изменилось. Как-то очень тяжеловесно проводить замес на уровне ASN1.
Берем Bouncy Castle. Открываем статью "Add signed/authenticated attributes to CMS signature using BouncyCastle" на stackoverflow.
Там есть пример создание строителя хеш функции - JcaDigestCalculatorProviderBuilder. Он создает объект DigestCalculatorProvider. Создаем его чуточку раньше. У него есть поток записи данных. Туда скармливаем любого размера данные, хоть терабайт. Запрашивает у него getDigest(). Это будет значение параметра digestBytes, в 3-й строке рассматриваемого примера.
Ну, да, еще надо везде вместо "BC" указать название нужного провайдера.
Да, можно найти пример и по легче.
Удачи.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 29.10.2013(UTC) Сообщений: 10
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 1 раз в 1 постах
|
Возможно ли (и если да, то как?) положить в CMS-подпись всю цепочку сертификатов от корневого до того, которым выполняется подпись?
Если нельзя положить цепочку, то как проверить валидность сертификата из CMS-подписи, не имея цепочки сертификатов?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,004 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Автор: nosferatum ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Возможно ли (и если да, то как?) положить в CMS-подпись всю цепочку сертификатов от корневого до того, которым выполняется подпись?
Если нельзя положить цепочку, то как проверить валидность сертификата из CMS-подписи, не имея цепочки сертификатов? Да, можно. Как - зависит от того, как вы реализовываете. И в samples.jar, и в CAdES.jar есть функции для помещения сертификатов в подпись. Если нельзя положить, то как минимум нужно иметь доступ к сертификату подписи для проверки подписи. Восстановить цепочку можно, проверяя ссылку на центр сертификации (если он есть) в расширениях и загружая сертификаты его из сети. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 29.10.2013(UTC) Сообщений: 10
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 1 раз в 1 постах
|
Автор: afev ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Если нельзя положить, то как минимум нужно иметь доступ к сертификату подписи для проверки подписи. Восстановить цепочку можно, проверяя ссылку на центр сертификации (если он есть) в расширениях и загружая сертификаты его из сети.
Можно подробнее, как «загружать сертификаты из его сети»? В расширениях, например, имею: Идентификатор ключа субъектаaa ee c9 bd 04 65 dc 2f df 15 75 3d 4b aa f4 e5 cf 87 dc c9 Идентификатор ключа центра сертификации:Идентификатор ключа=11 3e 58 f0 97 cf 1e 41 4e e3 01 70 81 1a ef 76 9d 8c 11 d8 Поставщик сертификата: Адрес каталога: CN=RUC_SO_2 C=RU S=63 Самарская область L=Самара O=ГКУ СО РЦУП ОГРН=1096315003080 ИНН=006315856325 Серийный номер сертификата=7a 2f 2e 72 88 41 6d 9f 4e 53 10 76 1a 00 cd 52 Точки распространения списков отзыва[1]Точка распределения списка отзыва (CRL) Имя точки распространения: Полное имя: URL=http://10.0.40.59/cryptopro_2012_coc.crl [2]Точка распределения списка отзыва (CRL) Имя точки распространения: Полное имя: URL=http://ruc.samregion.ru/cryptopro_2012_coc.crl Доступ к информации о центрах сертификации[1]Доступ к сведениям центра сертификации Метод доступа=Протокол определения состояния сертификата через сеть (1.3.6.1.5.5.7.48.1) Дополнительное имя: URL=http://ca.samregion.ru/ocsp/ocsp.srf Этих данных будет достаточно для восстановления пути сертификации от сертификата подписи до корневого сертификата и валидации сертификата подписи? Отредактировано пользователем 21 ноября 2013 г. 17:47:38(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,004 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Автор: nosferatum ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Доступ к информации о центрах сертификации
Здесь может присутствовать информация вида (но необязательно): [3]Доступ к сведениям центра сертификации Метод доступа=Поставщик центра сертификации (1.3.6.1.5.5.7.48.2) Дополнительное имя: URL=http://www.cryptopro.ru/certenroll/pki-site_Test%20Center%20CRYPTO-PRO(2).crt |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 29.10.2013(UTC) Сообщений: 10
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 1 раз в 1 постах
|
Автор: afev ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Здесь может присутствовать информация вида (но необязательно):
[3]Доступ к сведениям центра сертификации Метод доступа=Поставщик центра сертификации (1.3.6.1.5.5.7.48.2) Дополнительное имя: URL=http://www.cryptopro.ru/certenroll/pki-site_Test%20Center%20CRYPTO-PRO(2).crt
Во всех доступных мне примерах используемых у нас сертификатов, таких данных нет: Метод доступа=Поставщик центра сертификации (1.3.6.1.5.5.7.48.2) Есть только как приведенные мной выше: Метод доступа=Протокол определения состояния сертификата через сеть (1.3.6.1.5.5.7.48.1) В таком случае, достать цепочку сертификатов и проверить валидность сертификата невозможно? Отредактировано пользователем 21 ноября 2013 г. 18:13:40(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,004 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 29.10.2013(UTC) Сообщений: 10
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 1 раз в 1 постах
|
Спасибо. Стало быть, остается только обязательно класть всю цепочку сертификатов при формировании CMS-подписи. Автор: afev ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Да, можно. Как - зависит от того, как вы реализовываете. И в samples.jar, и в CAdES.jar есть функции для помещения сертификатов в подпись.
Создание CMS-подписи я взял из примера CMS.java (в CMS_Samples из samples_src.jar), метода createCMS(byte[] buffer, byte[] sign, Certificate cert, boolean detached), Прошу подсказать по следующим пунктам: - Где именно смотреть примеры в samples.jar и CAdES.jar добавление дополнительных сертификатов в CMS-подпись? - Как, собственно, получить все сертификаты из цепочки «от корневого сертификата УЦ до сертификата подписи», имея сертификат подписи, на этапе подписи (в Java)? Как-то достать из KeyStore, видимо? - Как на этапе проверки подписи сформировать из сертификатов цепочку в правильном порядке сертификатов? Нужно ли для этого специально сохранять порядок сертификатов в цепочке?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close