Статус: Новичок
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
Текущая версия КриптоПро PDF не понимает подписи adbe.pkcs7.detached. Попробуйте adbe.x509.rsa_sha1.
Скоро будет доступна версия КриптоПро PDF, создающая и проверяющая подписи вида adbe.pkcs7.detached. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.12.2010(UTC) Сообщений: 25 Откуда: Новосибирск
|
А если используется RSA_SHA1, какие провайдеры надо указывать при создании подписи? Стандартные от Майкрософта или все-таки Gost3410/3411? И в том, и в другом случае возникают вопросы по части совместимости. Мои эксперименты (RSA_SHA1, Gost3410/3411CryptoServiceProvider) привели пока только к тому, что факт наличия подписи опознается, а проверка не получается.
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
Последняя версия КриптоПро PDF делает и проверяет подписи типа adbe.pkcs7.detached. Проверяются, естественно, только подписи по ГОСТ Р 34.10-2001, т.е. стандартные провайдеры MS не подойдут. Пришлите кусок кода, создающий подпись и пример подписанного документа PDF. Мы посмотрим на предмет совместимости. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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) загружен 139 раз(а). example-signed-3.pdf (50kb) загружен 93 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
Можно ещё примеры кода создания и проверки подписи получить? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.12.2010(UTC) Сообщений: 25 Откуда: Новосибирск
|
Да, кстати, я разобрался. Теперь все работает. Успешно проверяющийся пример и фрагмент кода прилагаю. Код предствляет собой некоторую компиляцию из примеров iTextSharp и CryptoPro Sharpei. Главное, что оказалось нужным сделать, - указать фильтром CryptoPro#20PDF. Отредактировано пользователем 7 января 2011 г. 15:53:16(UTC)
| Причина: Не указана Вложение(я): example-signed-5.pdf (50kb) загружен 114 раз(а). pdf_signing.cs (5kb) загружен 291 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.12.2010(UTC) Сообщений: 25 Откуда: Новосибирск
|
Попутно была замечена следующая особенность. При отсутствии подключения к интернету Adobe Reader признает, что подпись правильная, но сертификат не подтверждает (пишет, что он untrusted). Причем это верно как для документов, которые я подписываю самостоятельно, так и для тех, которые подписаны через Adobe Reader с библиотекой КриптоПро PDF. Для документов, подписанных посредством обычных pfx-ключей, такого не происходит. Это вообще особенность работы КриптоПро PDF или связано с тем, что используются тестовые ключи, полученные на вашем тестовом УЦ?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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];
Этот способ работает, но он требует, чтобы сертификат обязательно был установлен в личные перед подписыванием. Если сертификат принесен, например, на флэшке, это потребует дополнительных предварительных действий. Существует ли способ получить содержимое сертфиката вместе с секретным ключом, не устанавливая его в личные?
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
timkin_vn написал:Попутно была замечена следующая особенность. При отсутствии подключения к интернету Adobe Reader признает, что подпись правильная, но сертификат не подтверждает (пишет, что он untrusted). Причем это верно как для документов, которые я подписываю самостоятельно, так и для тех, которые подписаны через Adobe Reader с библиотекой КриптоПро PDF. Для документов, подписанных посредством обычных pfx-ключей, такого не происходит. Это вообще особенность работы КриптоПро PDF или связано с тем, что используются тестовые ключи, полученные на вашем тестовом УЦ? По поводу собственных подписей у Adobe Reader есть собственное мнение о проверке статусов сертификатов. Мы особо это мнение не изучали. В случае КриптоПро PDF и неусовершенствованной ЭЦП цепочка сертификатов проверяется в том числе и на отзыв, для чего обычно требуется откачка CRL. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close