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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline dimappik  
#1 Отправлено: : 19 октября 2010 г. 19:47:49(UTC)
dimappik

Статус: Новичок

Группы: Участники
Зарегистрирован: 19.10.2010(UTC)
Сообщений: 1
Откуда: СПб

Добрый день,
Разрабатываю библиотеку для подписывания PDF документов.
В качестве криптопровайдера используется КриптоПро CSP 3.6.
Одним из условий является правильность проверки подписи средствами КриптоПро PDF.

При записи подписи в документ используются следующие параметры:
Фильтр Adobe.PPKLite (хотя судя по сообщениям с форума Адобе - фильтр не имеет значение)
Субфильтр - adbe.pkcs7.detached

При проверке подписи средствами КриптоПро PDF вылетает след. ошибка:
"Unsupported cryptographic algorithm encountered error".

С pdf работаю через iTextSharp, с КриптоПро - через Sharpei.

Что можно предпринять, для того, чтобы КриптоПро PDF мог проверить подпись?

Отредактировано пользователем 30 декабря 2010 г. 20:05:46(UTC)  | Причина: Не указана

Offline Павел Смирнов  
#2 Оставлено : 19 октября 2010 г. 19:55:57(UTC)
Павел Смирнов

Статус:: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Текущая версия КриптоПро PDF не понимает подписи adbe.pkcs7.detached. Попробуйте adbe.x509.rsa_sha1.

Скоро будет доступна версия КриптоПро PDF, создающая и проверяющая подписи вида adbe.pkcs7.detached.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline timkin_vn  
#3 Оставлено : 30 декабря 2010 г. 10:49:01(UTC)
timkin_vn

Статус: Участник

Группы: Участники
Зарегистрирован: 14.12.2010(UTC)
Сообщений: 25
Откуда: Новосибирск

А если используется RSA_SHA1, какие провайдеры надо указывать при создании подписи? Стандартные от Майкрософта или все-таки Gost3410/3411? И в том, и в другом случае возникают вопросы по части совместимости. Мои эксперименты (RSA_SHA1, Gost3410/3411CryptoServiceProvider) привели пока только к тому, что факт наличия подписи опознается, а проверка не получается.
Offline Павел Смирнов  
#4 Оставлено : 30 декабря 2010 г. 20:09:29(UTC)
Павел Смирнов

Статус:: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Последняя версия КриптоПро PDF делает и проверяет подписи типа adbe.pkcs7.detached. Проверяются, естественно, только подписи по ГОСТ Р 34.10-2001, т.е. стандартные провайдеры MS не подойдут.
Пришлите кусок кода, создающий подпись и пример подписанного документа PDF. Мы посмотрим на предмет совместимости.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline timkin_vn  
#5 Оставлено : 6 января 2011 г. 15:01:05(UTC)
timkin_vn

Статус: Участник

Группы: Участники
Зарегистрирован: 14.12.2010(UTC)
Сообщений: 25
Откуда: Новосибирск

Поменял на pkcs7.detached.

Если выбираем сертификат от Майкрософта (pfx), все проходит замечательно. Документ успешно подписывается, а подпись опознается в Adobe Reader.

Если выбрать сертификат КриптоПро, документ тоже подписывается, но Adobe Reader ее не опознает, указывая, что ему неизвестен алгоритм.

Проверка средствами iTextSharp (после его небольшого допиливания) дает положительный результат: и для сертификатов pfx, и для КриптоПро; и созданных в Adobe Reader, и в программе через iTextSharp.

Во вложенных файлах - пример PDF с вашего сайта, подписанный сертификатом pfx (помеченный цифрой 3) и КриптоПро (цифра 4).

Отредактировано пользователем 6 января 2011 г. 15:03:46(UTC)  | Причина: Не указана

Вложение(я):
example-signed-4.pdf (50kb) загружен 129 раз(а).
example-signed-3.pdf (50kb) загружен 87 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Павел Смирнов  
#6 Оставлено : 6 января 2011 г. 19:32:29(UTC)
Павел Смирнов

Статус:: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Можно ещё примеры кода создания и проверки подписи получить?
Техническую поддержку оказываем тут.
Наша база знаний.
Offline timkin_vn  
#7 Оставлено : 7 января 2011 г. 15:46:45(UTC)
timkin_vn

Статус: Участник

Группы: Участники
Зарегистрирован: 14.12.2010(UTC)
Сообщений: 25
Откуда: Новосибирск

Да, кстати, я разобрался. Теперь все работает. Успешно проверяющийся пример и фрагмент кода прилагаю. Код предствляет собой некоторую компиляцию из примеров iTextSharp и CryptoPro Sharpei. Главное, что оказалось нужным сделать, - указать фильтром CryptoPro#20PDF.

Отредактировано пользователем 7 января 2011 г. 15:53:16(UTC)  | Причина: Не указана

Вложение(я):
example-signed-5.pdf (50kb) загружен 106 раз(а).
pdf_signing.cs (5kb) загружен 270 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline timkin_vn  
#8 Оставлено : 10 января 2011 г. 21:48:14(UTC)
timkin_vn

Статус: Участник

Группы: Участники
Зарегистрирован: 14.12.2010(UTC)
Сообщений: 25
Откуда: Новосибирск

Попутно была замечена следующая особенность. При отсутствии подключения к интернету Adobe Reader признает, что подпись правильная, но сертификат не подтверждает (пишет, что он untrusted). Причем это верно как для документов, которые я подписываю самостоятельно, так и для тех, которые подписаны через Adobe Reader с библиотекой КриптоПро PDF. Для документов, подписанных посредством обычных pfx-ключей, такого не происходит. Это вообще особенность работы КриптоПро PDF или связано с тем, что используются тестовые ключи, полученные на вашем тестовом УЦ?
Offline timkin_vn  
#9 Оставлено : 17 января 2011 г. 16:40:45(UTC)
timkin_vn

Статус: Участник

Группы: Участники
Зарегистрирован: 14.12.2010(UTC)
Сообщений: 25
Откуда: Новосибирск

Продолжу тему. На данный момент для получения сертификата приходится проделывать довольно сложную последовательность действий. Сначала я получаю Gost3410CryptoServiceProvider по имени контейнера (связано с особенностями выбранного решения). Если обратиться к его свойству ContainerCertificate, то окажется, что его свойство PrivateKey равно null. То есть, такой способ получения сертификата не позволяет обратиться к его секретному ключу. Поэтому я делаю следующий шаг: обращаюсь к личному хранилищу и ищу в нем сертификат с таким же серийным номером. Далее все работает нормально:
Код:
        CspParameters cp = new CspParameters(75, null, keyName);
        Gost3410CryptoServiceProvider cspGost = new Gost3410CryptoServiceProvider(cp);
        X509Certificate2 certGost = cspGost.ContainerCertificate;
        X509Store store = new X509Store("My", StoreLocation.CurrentUser);
        store.Open(OpenFlags.ReadOnly);
        X509Certificate2Collection coll = store.Certificates.Find(X509FindType.FindBySerialNumber, certGost.SerialNumber, true);
        X509Certificate2 cert = coll[0];

Этот способ работает, но он требует, чтобы сертификат обязательно был установлен в личные перед подписыванием. Если сертификат принесен, например, на флэшке, это потребует дополнительных предварительных действий. Существует ли способ получить содержимое сертфиката вместе с секретным ключом, не устанавливая его в личные?
Offline Павел Смирнов  
#10 Оставлено : 17 января 2011 г. 16:45:45(UTC)
Павел Смирнов

Статус:: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
timkin_vn написал:
Попутно была замечена следующая особенность. При отсутствии подключения к интернету Adobe Reader признает, что подпись правильная, но сертификат не подтверждает (пишет, что он untrusted). Причем это верно как для документов, которые я подписываю самостоятельно, так и для тех, которые подписаны через Adobe Reader с библиотекой КриптоПро PDF. Для документов, подписанных посредством обычных pfx-ключей, такого не происходит. Это вообще особенность работы КриптоПро PDF или связано с тем, что используются тестовые ключи, полученные на вашем тестовом УЦ?

По поводу собственных подписей у Adobe Reader есть собственное мнение о проверке статусов сертификатов. Мы особо это мнение не изучали.

В случае КриптоПро PDF и неусовершенствованной ЭЦП цепочка сертификатов проверяется в том числе и на отзыв, для чего обычно требуется откачка CRL.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline Павел Смирнов  
#11 Оставлено : 17 января 2011 г. 16:46:43(UTC)
Павел Смирнов

Статус:: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
timkin_vn написал:
Существует ли способ получить содержимое сертфиката вместе с секретным ключом, не устанавливая его в личные?

Существует. Для этого надо в момент создания сертификата установить его в контейнер секретного ключа. Тогда свойство ContainerCertificate будет заполнено.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline timkin_vn  
#12 Оставлено : 17 января 2011 г. 17:23:04(UTC)
timkin_vn

Статус: Участник

Группы: Участники
Зарегистрирован: 14.12.2010(UTC)
Сообщений: 25
Откуда: Новосибирск

Смирнов написал:
Существует. Для этого надо в момент создания сертификата установить его в контейнер секретного ключа. Тогда свойство ContainerCertificate будет заполнено.

Спасибо, поизучаем этот момент.
Offline timkin_vn  
#13 Оставлено : 19 января 2011 г. 9:08:28(UTC)
timkin_vn

Статус: Участник

Группы: Участники
Зарегистрирован: 14.12.2010(UTC)
Сообщений: 25
Откуда: Новосибирск

Смирнов написал:
Для этого надо в момент создания сертификата установить его в контейнер секретного ключа. Тогда свойство ContainerCertificate будет заполнено.

Не получается. Попробовал получать сертификаты на вашем тестовом УЦ. Сохранял и в реестр, и на флэшку. Во всех случаях результат один и тот же - повторение описанной выше ситуации.
И вообще, мне непонятна фраза - установить в контейнер. А разве каким-то иным образом можно получить сертификат? Когда я запрашиваю сертификат, мне сразу предлагается выбрать новый контейнер (набор ключей) или существующий. Иных вариантов, по крайней мере, на вашем тестовом УЦ, я не вижу.
Offline Павел Смирнов  
#14 Оставлено : 19 января 2011 г. 13:25:13(UTC)
Павел Смирнов

Статус:: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Если через контрольную панель КриптоПро CSP сделать "Просмотреть сертификаты в контейнере", то что Вы увидете? Есть там сертификат?
Техническую поддержку оказываем тут.
Наша база знаний.
Offline timkin_vn  
#15 Оставлено : 20 января 2011 г. 12:14:57(UTC)
timkin_vn

Статус: Участник

Группы: Участники
Зарегистрирован: 14.12.2010(UTC)
Сообщений: 25
Откуда: Новосибирск

Да, есть.
Offline Челпанов А.  
#16 Оставлено : 20 января 2011 г. 13:30:27(UTC)
Челпанов А.

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

Группы: Участники
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 390
Мужчина
Откуда: КриптоПро

Поблагодарили: 2 раз в 2 постах
Убил два своих предыдущих поста - они не о чем. Сразу не разобрался. Кого успел запутать - извинения.

После того как открыт секретный ключ
Код:
Gost3410CryptoServiceProvider cspGost=...

и из него получен сертификат
Код:
X509Certificate2 certGost = cspGost.ContainerCertificate;

необходимо в этот сертификат проставить обратную ссылку на секретный ключ
Код:
certGost.PrivateKey = cspGost;


В следующей версии ContainerCertificate будем возвращать со ссылкой на собственный контейнер.
Так как существует обход проблемы описанный выше, спешить с исправлением пока не будем.
С уважением, Александр.
Offline timkin_vn  
#17 Оставлено : 20 января 2011 г. 13:41:16(UTC)
timkin_vn

Статус: Участник

Группы: Участники
Зарегистрирован: 14.12.2010(UTC)
Сообщений: 25
Откуда: Новосибирск

Спасибо. Последнее, кажется, работает. Надо еще проверить на другом компьютере.
Offline demin alexey 2021  
#18 Оставлено : 20 мая 2021 г. 9:22:52(UTC)
demin alexey 2021

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
Добрый день. Вопрос по вложению. кто такой this.metadata?



Автор: timkin_vn Перейти к цитате
Поменял на pkcs7.detached.

Если выбираем сертификат от Майкрософта (pfx), все проходит замечательно. Документ успешно подписывается, а подпись опознается в Adobe Reader.

Если выбрать сертификат КриптоПро, документ тоже подписывается, но Adobe Reader ее не опознает, указывая, что ему неизвестен алгоритм.

Проверка средствами iTextSharp (после его небольшого допиливания) дает положительный результат: и для сертификатов pfx, и для КриптоПро; и созданных в Adobe Reader, и в программе через iTextSharp.

Во вложенных файлах - пример PDF с вашего сайта, подписанный сертификатом pfx (помеченный цифрой 3) и КриптоПро (цифра 4).


Offline Андрей *  
#19 Оставлено : 20 мая 2021 г. 10:06:16(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 10,311
Мужчина
Российская Федерация

Сказал «Спасибо»: 380 раз
Поблагодарили: 1528 раз в 1175 постах
Здравствуйте.

Автор: demin alexey 2021 Перейти к цитате
Добрый день. Вопрос по вложению. кто такой this.metadata?


Там заполняется информация по свойствам:

Цитата:

Dictionary<String, String> info

info.Add("Title", "...");
info.Add("Subject", "...");
stamper.MoreInfo = info;
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.