сертификат криптопро net

сертификат криптопро net Электронная цифровая подпись

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

Реализуются сертификаты раздельно для серверов, индивидуальных рабочих мест. В каталоге имеется сертификат на обновление программного обеспечения со старых релизов до актуальных, с поддержкой актуальных стандартов ФСБ РФ по конфиденциальности данных. Более детальная информация по телефону или электронной почте.

Содержание
  1. ПОЛУЧИТЕ КОСУЛЬТАЦИЮ ЭКСПЕРТА!
  2. Важное вступление
  3. Минуточку внимания
  4. Общие сведения
  5. Сценарии использования
  6. Документация
  7. Лицензирование
  8. Системные требования
  9. Сертификаты
  10. Что может послужить причиной такой ошибки
  11. Решение ошибки: отсутствие электронного сертификата в контейнере закрытого ключа
  12. Особенности версий КриптоПро
  13. Установка личного сертификата
  14. Как установить корневой сертификат КриптоПро
  15. Как установить контейнер закрытого ключа в реестр
  16. Ошибки при установке
  17. Как вызывается Revocation Provider
  18. Как работает Revocation Provider
  19. Инструменты КриптоПро
  20. Что имеем на входе?
  21. Создание подписанного документа
  22. Соберем проект с поддержкой ГОСТ Р 34. 11-2012 256 bit
  23. Первым делом создадим новую папку
  24. I – Сборка проекта без сборки corefx для Windows
  25. II – Сборка проекта со сборкой corefx для Windows
  26. Инструкция по созданию файла, подписанного ЭЦП, с использованием ПО КриптоПро
  27. Как добавить контейнер при установке сертификата в СКЗИ
  28. Установка личного сертификата КриптоПро CSP
  29. Установка личного сертификата VipNet CSP
  30. Что делать, если мастер установки не находит контейнер
  31. Немного покодим
  32. Пробный запуск
  33. Проверка в КриптоАРМ
  34. Проверка на Госуслугах
  35. Проверка в Контур. Крипто
  36. Установка сертификатов
  37. Ссылки на публичные источники
  38. Сколько стоит купить лицензию, варианты поставки
  39. Так, а что надо на выходе?
  40. Done.
  41. КриптоПро CSP

ПОЛУЧИТЕ КОСУЛЬТАЦИЮ ЭКСПЕРТА!

Дмитрий Ковалев,
руководитель департамента информационной безопасности

НаименованиеЦенаКоличество
Лицензия на право использования ПО “КриптоПро .NET” на одном рабочем месте 900,00 ₽
Лицензия на право использования ПО “КриптоПро .NET” на одном сервере 15 000,00 ₽
Сертификат на годовую техническую поддержку ПО “КриптоПро .NET” на одном рабочем месте 600,00 ₽
Сертификат на годовую техническую поддержку ПО “КриптоПро .NET” на одном сервере 4 150,00 ₽
Сертификат на годовую техническую поддержку ПО “КриптоПро .NET” в одной корпоративной системе 165 000,00 ₽
Дистрибутив ПО “КриптоПро SDK” на CD

* (включает дистрибутивы КриптоПро TSP SDK, КриптоПро OCSP SDK, КриптоПро ЭЦП SDK (CAdES), КриптоПро ЭЦП Browser Plug-in, КриптоПро .NET SDK)

1 000,00 ₽
Сертификат на годовую техническую поддержку “КриптоПро SDK”

* включает в себя консультации разработчиков КриптоПро CSP, КриптоПро JCP, КриптоПро TSP SDK, КриптоПро OCSP SDK, КриптоПро ЭЦП SDK (CAdES), КриптоПро ЭЦП Browser Plug-in, КриптоПро .NET SDK

82 500,00 ₽

Важное вступление

В гайде описывается формирование отсоединенной подписи в формате PKCS7 (рядом с файлом появится файл в формате .sig). Такую подпись может запросить нотариус, ЦБ и любой кому нужно долгосрочное хранения подписанного документа. Удобство такой подписи в том, что при улучшении ее до УКЭП CAdES-X Long Type 1 (CMS Advanced Electronic Signatures [1]) в нее добавляется штамп времени, который генерирует TSA (Time-Stamp Protocol [2]) и статус сертификата на момент подписания (OCSP [3]) – подлинность такой подписи можно подтвердить по прошествии длительного периода (Усовершенствованная квалифицированная подпись [4]).

Код основан на репозиториях corefx и DotnetCoreSampleProject – в последнем проще протестировать свои изменения перед переносом в основной проект и он будет отправной точкой по сборке corefx. Судя по записям с форума компании [5], решение для .NET Core в стадии бета-тестирования. Далее по тексту я также буду ссылаться на этот форум. Разработка велась в Visual Studio Community 2019.

Для получения штампа времени использован TSP-сервис http://qs.cryptopro.ru/tsp/tsp.srf


Offline

Белый Андрей

 

Оставлено
:

28 февраля 2022 г. 9:15:51(UTC)

Всем привет.
Наверное этот вопрос поднимался неоднократно, но ответа на него я не нашёл.

Сертификат был выпущен в прошлом году на КриптоПро 4, сейчас необходимо перенести его на другой компьютер.
Если купить для нового компьютера КриптоПро 5 будет ли работать тот сертификат?


Offline

basid

 

Оставлено
:

28 февраля 2022 г. 11:20:18(UTC)

Если под “сертификат” подразумевается “электронная подпись”, то – да, ЭП (в разумных пределах) не зависит от версии криптопровайдера.
Следует только учитывать, что далеко не все удостоверяющие центры прошли аккредитацию по новым правилам и далеко не все (ранее квалифицированные) ЭП могут использоваться в 2022 году.


Offline

two_oceans

 

Оставлено
:

1 марта 2022 г. 6:19:32(UTC)

Добрый день.
гост-2012 поддерживается и 4 и 5 версиями в равной мере. Пятая версия поддерживает больше как алгоритмов (со второй сертифицированной добавился гост-2015), так и мест хранения контейнеров (добавлены Директория и облачные контейнеры).

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

Для контейнеров на флешке или токене перенос не потребуется, просто подключите к новому компьютеру и установите сертификат. Удаление сертификата на старом компьютере также не обязательно.

thanks 1 пользователь поблагодарил two_oceans за этот пост.


Offline

Белый Андрей

 

Оставлено
:

1 марта 2022 г. 7:54:55(UTC)

сертификат криптопро net

Создание запроса на сертификат для ЕБС (Единой Биометрической системы) на компьютере с Windows

Опубликовано Александр Лавник on 2022-02-02 16:00

При необходимости есть возможность создать запрос на сертификат для ЕБС на компьютере с Windows.

Для создания корректного запроса необходимо:

  1. Использовать КриптоПро CSP 5.0 R2 и новее, чтобы компонент имени с OID 1.2.643.100.4 (ИНН ЮЛ) имел нужный тип NumericString.

  2. Настроить подлючение к HSM с помощью HSM Client.

  3. Добавить в реестре параметр с именем CPEnroll_ClientID в ветке:

    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Crypto Pro\Cryptography\CurrentVersion\Parameters

    типа DWORD со значением 0, чтобы в запрос не добавлялись лишние атрибуты.

  4. Использовать команду вида:

    cryptcp -creatrqst ^
    -provname "Crypto-Pro GOST R 34.10-2012 HSM CSP" -provtype 80 ^
    -pin 11111111 ^
    -dn ^
    "CN=""ФГБУ НИИ """"Восход"""""",^
    C=RU,S=77 Москва,^
    L=г. Москва,^
    STREET=""улица Удальцова, дом 85"",^
    O=""ФГБУ НИИ """"Восход"""""",^
    1.2.643.100.1=1234567890123,^
    1.2.643.100.4=1234567890^" ^
    -certusage 1.3.6.1.5.5.7.3.2,1.3.6.1.5.5.7.3.4 ^
    -cont contname ^
    -ext certpolicies.ext -ext hsm2.ext ^
    request.req

    В примере предполагается, что файлы расширений certpolicies.ext и hsm2.ext, а также созданный файл запроса request.req находятся в текущей директории. 

    Символ “^” использован для разбиения команды на строки для большей наглядности, без него команду необходимо записать в одну строку.

    Кавычки подкрашены для понимания того как работает вложенное экранирование.
    Для уже созданного ключевого контейнера необходимо добавить параметр -nokeygen

Другие подробности создания запроса на сертификат для ЕБС см. в основной статье.

сертификат криптопро net (1 плюсик(ов))

сертификат криптопро net Класс!

сертификат криптопро net Не очень 🙁


Изучаю вопрос работы с ЭЦП, которую теперь можно получить “бесплатно” (принесите только сертифицированный носитель). Однако, из документации получается, что для работы в ЛК ИП в налоговой нужно установить плагин в браузер, который в свою очередь хочет иметь Crypto Pro, которая платная.

Я всё правильно понял?
То есть для работы с бесплатной КЭП ЭЦП от налоговой нужно купить и Носитель, и лицензию КриптоПро?
—-
UPD: Что я выяснил в процессе

  • ЭЦП налоговой не работает с VipNet CSP! Просит именно CryptoPro CSP
  • CryptoPro CPS имеет 90 дней пробный период. Бессрочная лицензия в октябре 2021 стоит 2700р.
  • Вопрос задан

    более года назад

  • 14063 просмотра

Крипто-про – криптопровайдер.
Для работы эцп обязателен криптопровайдер, но не обязательна Крипто-про. Есть бесплатные криптопровайдеры, но с ними тяжело, криво и сложно работать. Используйте либо триалку Крипто-про, она даётся на полгода. Либо купите бессрочную версию. Она стоит пару тысяч и закрывает вопрос с криптопровайдером навсегда.

P. S. До этого года эцп выдавали только коммерческие уц и просили за это ещё 5 т.р. сверх стоимости носителя и криптопровайдера, продлевать нужно было ежегодно. И никто не гудел. А сейчас вы покупаете за 2 т.р. Крипто-про, за 500 р носитель и можете на него записывать эцп, полученную в налоговой хоть сто лет.

P. P. S. Если надумаете брать Крипто-про, берите именно бессрочную версию. Всё продавцы норовят продать подписку на год, которая всего в 2-3 раза дешевле бессрочной версии.


Пригласить эксперта

Типо того.
Благо есть ломанные версии

Да
Вы конечно не обязаны его покупать, но пользоваться подписью без него не сможете.

Изучаю вопрос работы с ЭЦП, которую теперь можно получить “бесплатно”

А почему бесплатно в кавычках? Ее действительно делают бесплатно.

нужно установить плагин в браузер, который в свою очередь хочет иметь Crypto Pro, которая платная.

Плагину Crypto Pro не нужен, он будет работать и без него прекрасно. Crypto Pro нужен для использования подписи.

То есть для работы с бесплатной КЭП ЭЦП от налоговой нужно купить и Носитель, и лицензию КриптоПро?

Разумеется.

16 сент. 2022, в 14:05

6000 руб./за проект

16 сент. 2022, в 13:37

1200 руб./в час

16 сент. 2022, в 13:35

20000 руб./за проект

Минуточку внимания

Общие сведения

КриптоПро .NET – программный продукт, позволяющий использовать средство криптографической защиты информации (СКЗИ) КриптоПро CSP на платформе Microsoft .NET Framework. КриптоПро .NET является новой версией существовавшего ранее программного продукта КриптоПро Sharpei и реализует набор интерфейсов для доступа к криптографическим операциям .NET Cryptographic Provider:

  • хэширование;
  • подпись;
  • шифрование;
  • MAC;
  • генерация ключей и т.д.

Кроме того КриптоПро .NET позволяет использовать стандартные классы Microsoft для высокоуровневых операций:

  • разбор сертификата;
  • построение и проверка цепочки сертификатов;
  • обработка CMS сообщений;
  • установление защищенного обмена через SSL/TLS, HTTPS и FTPS;
  • XML подпись и шифрование.

КриптоПро .NET состоит из двух частей:

  • КриптоПро .NET – клиентский модуль для ОС Windows;
  • КриптоПро .NET SDK – комплект разработчика, состоящий из документации, примеров и библиотек.

КриптоПро .NET обеспечивает применение всех алгоритмов, реализуемых КриптоПро CSP.

Сценарии использования

  • Разработка приложений и веб-сервисов, в которых требуется использование российских криптоалгоритмов, на .NET Framework;
  • Подпись и проверка подписи SOAP сообщений для взаимодействия информационных систем в единой системе межведомственного электронного взаимодействия;
  • Пакетная подпись документов XPS и Microsoft Office (соответствующие примеры кода входят в состав КриптоПро .NET SDK);
  • Подпись и проверка подписи с использованием Microsoft XPS Viewer;
  • Защита соединений Microsoft Lync 2010 с использованием российских криптоалгоритмов;
  • Использование российских криптоалгоритмов в службах федеративной аутентификации (AD FS, WIF, CardSpace и т.п.).

Документация

Документация на КриптоПро .NET SDK включена в дистрибутив и доступна на портале для разработчиков cpdn.

Вопросы встраивания и использования можно обсудить на форуме.

Лицензирование

Существует два вида лицензий КриптоПро .NET:

  • Клиентская лицензия – предоставляет право установки и эксплуатации одной копии продукта на компьютере под управлением клиентской версии ОС Windows (XP/Vista/7/8/8.1/10);
  • Серверная лицензия – предоставляет право установки и эксплуатации одной копии продукта на компьютере под управлением серверной версии ОС Windows (2003/2003 R2/2008/2008 R2/2012/2012 R2/2016/2019).

КриптоПро .NET SDK распространяется на бесплатной основе в составе КриптоПро SDK.

Системные требования

КриптоПро .NET функционирует на платформах Microsoft Windows 2000 и выше (x86 и x64) под управлением Microsoft .NET Framework 2.0 и выше и требует установленного КриптоПро CSP версии 2.0 и выше.

Для КриптоПро .NET SDK требуется наличие на компьютере установленного КриптоПро .NET.

Сертификаты

КриптоПро .NET использует сертифицированное ФСБ России средство криптографической защиты КриптоПро CSP.

Загрузить “КриптоПро .NET”

Заказать “КриптоПро .NET”

  • Страница для печатиСтраница для печати

вопросы

Из нашей статьи вы узнаете:

ЭЦП — довольно сложный цифровой продукт, обращение с которым в определенных ситуациях может потребовать некоторых навыков и знаний. Например, в ходе установки сертификатов ЭП посредством «КриптоПро» после выбора соответствующего ключевого контейнера нередко выдаются неприятные сообщения об ошибке вследствие отсутствия открытого шифровочного ключа, который необходим для обеспечения информационной безопасности, без чего система не будет принимать ЭЦП.

Такую ошибку несложно устранить без вызова специалиста или обращения в службу поддержки. Алгоритм действий, направленных на решение этой проблемы, приводится ниже.

Что может послужить причиной такой ошибки

ошибка в контейнере закрытого ключа и причины её появления

Всплывающее окно со злополучным сообщением об ошибке появляется на экранах пользователей в тех случаях, если система не смогла обнаружить соответствующий ключ на носителе. Такая ситуация происходит при следующих действиях пользователей:

  • установка сертификата впервые;
  • экспортирование данных на внешний носитель;
  • попытка просмотра ключей в контейнерах ключей;
  • загрузка информации на компьютер извне.

В целях устранения ошибки обычно бывает достаточно произвести корректную ручную переустановку сертификата.

Решение ошибки: отсутствие электронного сертификата в контейнере закрытого ключа

Для начала запускаем «КриптоПро» нажатием кнопки «Пуск». Затем выбираем «Настройку», в возникающем на мониторе окне заходим в опцию панели управления, далее «сервис – установить личный сертификат».

программа криптопро предложит указать место хранение сертификата

Далее, через кнопку «обзор» указываем путь, где сохранен открытый ключ – файл с расширением *.cert или *.crt

Необходимо выбрать файл и открыть его с помощью криптопро

Жмём «Далее», в мастере установки сертификата мы увидим путь, который указывали до нашего сертификата.

Убедившись, что криптопро верно распознало путь установки сертификата, подтверждаем установку

Нам отображается информация, содержащаяся в открытом ключе на пользователя, жмём «далее»

Перед импортом сертификата надо проверить содержащуюся в нем информацию

В следующем окне можно воспользоваться двумя путями поиска нужного контейнера закрытого ключа:

  • «найти контейнер автоматически
  • вручную через «обзор»

В первом случае КриптоПро на основе данных из открытого ключа подберет закрытый, в случае с ручным поиском нужно будет знать название закрытого ключа, чтобы выбрать его для установки

Мы рекомендуем использовать функцию КриптоПро «найти контейнер автоматически» или указать его вручную через «обзор»

Самый простой вариант выбрать автоматический поиск, затем после «обнаружения» необходимого контейнера, мы увидим заполненную строчку с его именем и после жмём «Далее»

после того, как указан контейнер, можно продолжить установку

Личный сертификат пользователя всегда устанавливается в хранилище «Личное», можно выбрать как вручную, так и КриптоПро может сделать это за вас по умолчанию, затем подтверждаем установку цепочки сертификатов и жмём «Далее»

Важно! Не забудьте поставить галку в настройках КриптоПро «установить сертификат (цепочку сертификатов) в контейнер>

В случае успешной установки КриптоПро выдаст окно с информацией об окончании процедуры и жмём «Готово»

Можно завершать установку сетификата

Затем появится окно с подтверждением данной операции, жмём «ДА»

Криптопро предложит перезаписать сертификат – соглашаемся

В следующем окне увидим информацию о том, что процесс окончен успешно. Сертификат установлен в контейнер закрытого ключа.

Готово. Сертификат установлен

Особенности версий КриптоПро

С января 2019 года квалифицированные сертификаты могут выпускаться только по ГОСТ 2012, выпуск по другому ГОСТу прекращен. Мы об этом писали ранее в статье. Важно помнить, что версии криптопро на ГОСТ 2012 работают только с версии 4.0 и выше. Все старые версии КриптоПро, для нормальной работы, потребуется обновить или заменить на актуальную. Сделать это нужно не позднее 31 декабря 2019 года.

вопросы

Из нашей статьи вы узнаете:

При работе с ЭЦП во время подписи документов может понадобиться установка нового сертификата с использованием «КриптоПро CSP» — например, когда у ЭЦП закончился срок, произошла смена главного бухгалтера или директора предприятия, либо необходима установка нового сертификата после оформления в удостоверяющем центре.

Для корректной работы может потребоваться установка личного и корневого сертификата в КриптоПро. Чтобы это сделать придерживайтесь следующей инструкции.

Установка личного сертификата

Для того чтобы установить сертификат с помощью «КриптоПро CSP», выполните следующий алгоритм:

  • запустите «КриптоПро», кликнув на иконку на рабочем столе или запустив из меню, перейдя по пути «Пуск» — «Программы» — «КриптоПро» — «КриптоПро CSP»);
  • зайдите во вкладку «Сервис»;
  • Вкладка «Сервис»

  • нажмите левой кнопкой мыши на иконку «Просмотреть сертификаты в контейнере»;
  • Просмотр сертификата в контейнере

  • найдите после нажатия кнопки «Обзор» контейнер с вашим сертификатом;
  • Поиск контейнера с сертификатом

  • выберите необходимый контейнер и подтвердите своё действие кнопкой «ОК» и затем «Далее»;
  • Выберите необходимый контейнер

    Нажмите «Далее»

  • проверьте правильность информации о сертификате внутри контейнера;
  • нажмите кнопку «Установить».
  • Нажмите «Установить»

Обратите внимание, что при установке система запоминает последний контейнер, с которого была проведена операция. Например, если вы установили личный сертификат из реестра вашего компьютера, а потом повторили процедуру с флешки, то при отсутствии последней система не сможет найти контейнер.

Как установить корневой сертификат КриптоПро

Для корректной работы сервера надо установить предварительно корневой сертификат в ваше хранилище. Для его получения необходим тестовый центр по сертификации продукта, куда можно попасть при наличии прав администратора. Также для предотвращения проблем необходимо добавить адрес интернет-сайта в список доверенных. Запросите сертификат, загрузив его из сертификационного центра. Чтобы его установить, откройте его и выполните следующие действия:

  • зайдите в раздел «Общие»;
  • выберите пункт «Установить сертификат»;
  • следуйте за шагами мастера по установке, который поможет выполнить операцию.
  • Выполните операции

Если процесс пройдёт корректно, то корневой сертификат появится в хранилище среди доверенных центров.

Как установить контейнер закрытого ключа в реестр

  1. Подключите к компьютеру носитель с сертификатом.
  2. Перейдите в «Пуск» → «Панель управления» → «КриптоПро CSP», откройте вкладку «Сервис» и нажмите «Скопировать».
  3. «Скопировать»

  4. Нажмите «Обзор…», выберите контейнер с сертификатом, нажмите «ОК» и «Далее».
  5. нажмите «ОК» и «Далее»

  6. Введите pin-код, затем нажмите «ОК».
  7. нажмите «ОК»

  8. Оставьте имя контейнера по умолчанию или введите новое.
  9. Имя по умолчанию

  10. В окне «Устройства» выберите «Реестр» и нажмите «ОК».
  11. выберите «Реестр» и нажмите «ОК»

  12. Установите пароль для контейнера.
  13. Установите пароль для контейнера

После успешного копирования контейнера личный сертификат нужно установить в хранилище «Личные».

Установите личный сертификат

Ошибки при установке

Довольно распространённой проблемой при установке становится зависание компьютера. Обычно это связано с установкой нелицензионного ПО, наличием ошибок или отсутствием критических обновлений. Также проблемы могут возникнуть в следующих случаях:

  • попытка установить недействительный сертификат;
  • указание неверного пути к файлу;
  • истечение срока действия сертификата.

Для корректной работы рекомендуем использовать только лицензионное ПО. Приобрести его и получить комплексную техническую поддержку можно в компании «Астрал-М». Мы входим в число официальных дилеров компании «КриптоПро», что подтверждает информация на сайте разработчика. Обращаясь в «Астрал-М», вы получаете:

  • поддержку в режиме 24/7;
  • оперативное оформление ЭЦП;
  • любую форму оплаты;
  • консультации по выбору подписи и типа лицензии;
  • возможность оформления ЭЦП в офисе клиента и в ускоренном формате.

Для приобретения электронной подписи или криптопровайдера заполните форму обратной связи, чтобы наш специалист связался с вами.


Offline

MrTvink

 

Оставлено
:

23 марта 2021 г. 7:45:47(UTC)

Добрый день,

Пишу функцию для формирования отсоединённой подписи PKCS#7 по представленному алгоритму:
1. Из XML файл-а (PACK_DATA) вычисляется хэш по алгоритму ГОСТ Р 34.11-94.
2. Полученный хэш кодируется в Base64.
3. Base64 данные переводятся в текст в кодировке UTF-16LE.
4. Из полученного текста создается отсоединенная подпись PKCS#7.
Сделал по аналогии с примером simple.zip\CMS\cs\AddSignDetached.cs

Код:


        string Crypto(string way, string CertThumb)
        {
            XmlDocument xmlDoc = new XmlDocument();
            X509Store store = new X509Store("my", StoreLocation.CurrentUser);
            X509Certificate2 cert = null;
            xmlDoc.Load(way);
            store.Open(OpenFlags.ReadOnly);
            foreach (X509Certificate2 certs in store.Certificates.Find(X509FindType.FindByThumbprint, CertThumb, true))
            { 
                cert = certs;
            }
            store.Close();
            ///-------------CryptoPro-----------------///
            // ГОСТ Р.34-11 с отсоединенной подписью
            byte[] bytes = Encoding.Default.GetBytes(xmlDoc.OuterXml);
            Gost3411 gost3411 = new Gost3411CryptoServiceProvider();
            byte[] result = gost3411.ComputeHash(bytes);
            string resultStr = Convert.ToBase64String(result);
            result = Convert.FromBase64String(resultStr);
            ContentInfo contentInfo = new ContentInfo(result);
            SignedCms signedCms = new SignedCms(contentInfo, true);
            CmsSigner signer = new CmsSigner(cert);
            //sha1RSA 1.3.14.3.2.26 GOST 1.2.643.2.2.9 Gost(2010)"1.2.643.2.2.19"
            signer.DigestAlgorithm = new Oid("1.2.643.2.2.9");
            signedCms.ComputeSignature(signer); //Ошибка тут
            result = signedCms.Encode();
            return result.ToString();
        }

Ловлю ошибку:
System.Security.Cryptography.CryptographicException: “‘1.2.643.2.2.9’ is not a known hash algorithm.”

Не могу понять, как исправить или понять конкретно в чём проблема(в сертификате или не та версия CryptoPro .net)
При попытке поставить OID sha1RSA ошибка проходит, но выходит другая (System.Security.Cryptography.CryptographicException: “Could not determine signature algorithm for the signer certificate.”).
Стоит:
ex-Sharpei версии 1.4.7132.03
Microsoft Visual Studio Community 2019 Версия 16.9.1

Отредактировано пользователем 23 марта 2021 г. 14:39:52(UTC)
 | Причина: Выделить код


Offline

Санчир Момолдаев

 

Оставлено
:

23 марта 2021 г. 22:04:21(UTC)

Добрый день!
переустановите КриптоПро .NET
1. uninstall
2. reboot
3. install
4. reboot


Offline

MrTvink

 

Оставлено
:

24 марта 2021 г. 9:42:38(UTC)

Переустановил, не помогло, подгружал в проект эти библиотеки:
CryptoPro.Sharpei.Base.dll
CryptoPro.Sharpei.ServiceModel.dll
CryptoPro.Sharpei.ServiceModel45.dll
CryptoPro.Sharpei.Xml.dll

Есть предположение что не корректно работаю с CryptoPro .Net или версия .Net Framework
забыл добавить версия .Net Framework 4.8.03752.

Отредактировано пользователем 24 марта 2021 г. 10:03:01(UTC)
 | Причина: Догадки


Offline

Санчир Момолдаев

 

Оставлено
:

26 марта 2021 г. 10:02:06(UTC)

а версия КриптоПро CSP какая установлена?
используйте CSP 5.0 R2


Offline

MrTvink

 

Оставлено
:

26 марта 2021 г. 10:23:58(UTC)

КриптоПро 4.0.9963 (5-ку пока не пробовал),
Откатил .netFramework в проекте на 4.6 ошибка сменилась на:
System.Security.Cryptography.CryptographicException: “Отказано в доступе.” (в данный момент разбираюсь с ней, и хочу посмотреть приведет ли она опять к ошибке с OID)


Offline

Санчир Момолдаев

 

Оставлено
:

26 марта 2021 г. 10:24:46(UTC)

Автор: MrTvink Перейти к цитате

КриптоПро 4.0.9963 (5-ку пока не пробовал),
Откатил .netFramework в проекте на 4.6 ошибка сменилась на:
System.Security.Cryptography.CryptographicException: “Отказано в доступе.” (в данный момент разбираюсь с ней, и хочу посмотреть приведет ли она опять к ошибке с OID)

скорее всего истек срок действия ЗК. попробуйте протестировать ее в панели КриптоПро CSP


Offline

MrTvink

 

Оставлено
:

29 марта 2021 г. 10:32:03(UTC)

Результат теста сертификата:

Код:

Проверка завершилась с ошибкой 	
Контейнер закрытого ключа      	пользователя
  имя                          	2021 - Реестр
  уникальное имя               	REGISTRY\\2021 - Реестр
  FQCN                         	\\.\REGISTRY\2021 - Реестр
  проверка целостности контейнера 	успешно
Ключ обмена                    	доступен
  длина ключа                  	512 бит
  экспорт открытого ключа      	успешно
  вычисление открытого ключа   	успешно
  импорт открытого ключа       	успешно
  подпись                      	Ошибка 0x80090010: Отказано в доступе.    
  создание ключа обмена        	успешно
  экспорт ключа                	разрешен
  алгоритм                     	ГОСТ Р 34.10-2001 DH
                               	ГОСТ Р 34.10 256 бит, параметры обмена по умолчанию
                               	ГОСТ Р 34.11-94, параметры по умолчанию
                               	ГОСТ 28147-89, параметры по умолчанию
  сертификат в контейнере      	соответствует закрытому ключу
  поставщик                    	ОГРН=1167746447461, ИНН=007733284010, C=RU, L=Москва, OU=Удостоверяющий центр, O=ФГУП ГНИВЦ ФНС России, CN=GNIVC FNS RUS
  действителен с               	4 марта 2021 г. 14:26:52
  действителен по              	4 марта 2022 г. 14:36:52
  серийный номер               	706C 9E00 E1AC AA9E 482E 1847 EE26 C230
Срок действия закрытого ключа  	4 июня 2022 г. 14:18:43
Использование ключа обмена     	разрешено до окончания срока действия закрытого ключа.
Ключ подписи                   	отсутствует       //На том где все корректно так же
  загрузка ключей              	успешно
Версия контейнера              	2
Расширения контейнера          	
  некритическое                	Расширение контейнера КриптоПро CSP. Срок действия ключа обмена
  действителен по              	4 июня 2022 г. 14:18:43

Проверил на нескольких рабочих местах на одном он работает корректно и даёт подписать тест в Browser CryptoPro plugin (и в тестировании CryptoPro Csp происходит всё корректно), не могу понять почему. Может ли что то блокировать работу сертификата (В КриптоПро CSP выключена безопасность)


Offline

Санчир Момолдаев

 

Оставлено
:

30 марта 2021 г. 12:02:02(UTC)

проверьте что есть права на запись
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro\Settings\Users\ SID-пользователя \Keys – ключи пользователя ОС


Offline

MrTvink

 

Оставлено
:

30 марта 2021 г. 12:19:22(UTC)

Да, есть. И в КриптоПро CSP -> Безопасность -> Усиленный контроль. Отключён
сертификат криптопро net Bezymjannyjj.png (23kb) загружен 6 раз(а).


Offline

Санчир Момолдаев

 

Оставлено
:

30 марта 2021 г. 12:56:17(UTC)

там должна быть подпапка в духе 2021 – Реестр
посмотрите права там. если что попробуйте перенести на другой считыватель. к примеру HDIMAGE (директория) если у вас CSP 5.0


Offline

MrTvink

 

Оставлено
:

30 марта 2021 г. 13:45:21(UTC)

Да, она есть, права так же выданы пользователю.
Щас стоит 4.0.9963 ставлю 5.0 (на другую машину), хочу проверить работу сертификата и там.

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

Таким образом, проверка статусов сертификатов важна для приложений, использующих ИОК, поскольку, например, принятие к обработке подписанного ЭЦП документа, соответствующий сертификат ключа подписи которого аннулирован, может быть впоследствии оспорено и привести к финансовым потерям.

В ОС Microsoft Windows встроена поддержка технологии ИОК. Многие приложения, работающие под управлением этих ОС, используют интерфейс CryptoAPI для осуществления функций криптографической защиты информации. Функции CryptoAPI используют, например, следующие приложения: Internet Explorer, Outlook Express, Outlook, Internet Information Server и др.

По умолчанию CryptoAPI осуществляет проверку статусов сертификатов с использованием СОС (CRL). СОС представляет собой список аннулированных или приостановленных сертификатов, издаваемый периодически – например, раз в неделю. СОС не отражает информацию о статусах в реальном времени, а также имеет ряд других недостатков, которых лишён протокол OCSP – протокол получения статуса сертификата в реальном времени.

Архитектура CryptoAPI предоставляет возможность подключения внешнего модуля проверки статуса сертификата – Revocation Provider.

КриптоПро Revocation Provider предназначен для встраивания проверки статусов сертификатов открытых ключей в режиме реального времени по протоколу OCSP в ОС Windows.

Назначение: 

КриптоПро Revocation Provider предназначен для встраивания проверки статусов сертификатов открытых ключей в режиме реального времени по протоколу OCSP в ОС Windows.

КриптоПро Revocation Provider, будучи установлен в системе, встраивается в CryptoAPI и тем самым обеспечивает проверку статусов сертификатов во всех приложениях по протоколу OCSP, причём менять что-либо в самих приложениях не требуется. Revocation Provider вызывается автоматически каждый раз, когда приложение осуществляет действия с сертификатом. Проверка сертификата в реальном времени по протоколу OCSP обеспечивает большую безопасность по сравнению с СОС.

Схема встраивания Revocation Provider в ОС представлена на рисунке.

сертификат криптопро net

Реализуемые алгоритмы: 

Чтобы обеспечить использование протокола OCSP для проверки статусов сертификатов, используемых в конкретной информационной системе, необходимо, чтобы в данной системе работал сервер OCSP.

В качестве сервера OCSP для КриптоПро Revocation Provider можно использовать КриптоПро OCSP Server.

Поддерживаемые платформы: 

КриптоПро Revocation Provider функционирует в операционных системах Microsoft Windows, как англоязычных, так и локализованных.

Основные характеристики: 

КриптоПро Revocation Provider:

  • Встраивает проверку статуса сертификатов по протоколу OCSP во все приложения операционной системы.
  • Не требует модификации приложений для использования своих возможностей.
  • Уменьшает риск стать жертвой мошенничества или понести ответственность.
  • Совместим с серверными приложениями.
  • Автоматически проверяет статусы сертификатов OCSP-серверов.
  • Поддерживает расширение . Если такое расширение присутствует в сертификате сервера, то статус этого сертификата не проверяется.
  • Автоматически проверяет, уполномочен ли OCSP-сервер Удостоверяющим Центром, издавшим проверяемый сертификат, выдавать информацию о статусе данного сертификата.
  • Настраивается через групповые политики.
  • Даёт возможность настройки доверия к конкретным OCSP-серверам.
  • При невозможности проверки сертификата по протоколу OCSP передаёт его в Microsoft Revocation Provider, который проводит проверку по СОС.
  • Может осуществлять соединения по защищённому протоколу TLS (SSL).
  • Устанавливается с помощью Windows Installer.

Использование: 

Как вызывается Revocation Provider

Будучи установленным в системе, Revocation Provider вызывается для проверки сертификата(ов) при каждом вызове функции CryptoAPI CertVerifyRevocation. Фактически, все параметры этой функции передаются без изменений в Revocation Provider. Помимо непосредственного вызова, эта функция, а значит и Revocation Provider, вызывается неявно внутри функций CertGetCertificateChain и WinVerifyTrust.

Как работает Revocation Provider

Когда приложение, работающее с CryptoAPI, вызывает функцию проверки статуса сертификата, в Revocation Provider передаётся этот сертификат вместе с рядом дополнительных параметров.

Revocation Provider, получив на проверку сертификат, создаёт OCSP-запрос на данный сертификат и обращается к одной или нескольким службам OCSP с этим запросом. При получении OCSP-ответа, осуществляет его проверку. Если ответ проходит проверку и содержит статус сертификата good или revoked, в отличие от unknown (см. RFC2560), то на этом проверка заканчивается и полученный статус возвращается приложению. Если же ответ содержит статус unknown или не проходит проверку, то происходит обращение по следующему адресу.

Очерёдность обращения к службам OCSP определяется следующим образом:

  1. По расширению AIA (AuthorityInformationAccess) в сертификате. Среди различных точек AIA выбирает те, к которым указан метод доступа по протоколу OCSP, обращения к ним происходят по очереди их расположения в сертификате.
  2. Если ни по одному из адресов OCSP-серверов, указанных в расширении AIA сертификата, не удаётся получить удовлетворяющий этим условиям ответ, или если таких адресов в сертификате не указано, то Revocation Provider пробует обратиться за статусом к OCSP-серверу, адрес которого задан групповой политикой, если она определена.

Если на предыдущих шагах не удаётся получить удовлетворяющем описанным условиям ответ, то сертификат передаётся на проверку в Microsoft Revocation Provider, входящий в состав ОС Windows. Microsoft Revocation Provider осуществляет проверку данного сертификата с использованием СОС. Полученный статус сертификата возвращается приложению.

Сертификаты: 

КриптоПро Revocation Provider использует сертифицированное ФСБ России средство криптографической защиты КриптоПро CSP.

  • Страница для печатиСтраница для печати

Инструменты КриптоПро

Для работы с ЭЦП запустите утилиту “Инструменты КриптоПро”. В ней собраны все необходимые инструменты для работы с ЭЦП

Для работы можно использовать ЭЦП, выданную Казначейством района Для этого необходимо скачать и установить корневой сертификат Федерального казначейства РФ по ссылке. Так как это корневой сертификат, то и установить его необходимо в хранилище корневых сертификатов.

Что имеем на входе?

  1. КриптоПро CSP версии 5.0 – для поддержки Российских криптографических алгоритмов (подписи, которые выпустили в аккредитованном УЦ в РФ)

  2. КриптоПро TSP Client 2.0 – нужен для штампа времени

  3. КриптоПро OCSP Client 2.0 – проверит не отозван ли сертификат на момент подписания

  4. КриптоПро .NET Client – таков путь

  5. Любой сервис по проверке ЭП – я использовал Контур.Крипто как основной сервис для проверки ЭП и КриптоАРМ как локальный. А еще можно проверить ЭП на сайте Госуслуг

  6. КЭП по ГОСТ Р 34.11-2012/34.10-2012 256 bit, которую выпустил любой удостоверяющий центр

Лицензирование ПО и версии
  1. КриптоПро CSP версии 5.0 – у меня установлена версия 5.0.11944 КС1, лицензия встроена в ЭП.

  2. КриптоПро TSP Client 2.0 и КриптоПро OCSP Client 2.0 – лицензии покупается отдельно, а для гайда мне хватило демонстрационного срока.

  3. КриптоПро .NET Client версии 1.0.7132.2 – в рамках этого гайда я использовал демонстрационную версию клиентской части и все действия выполнялись локально. Лицензию на сервер нужно покупать отдельно.

  4. Контур.Крипто бесплатен, но требует регистрации. В нем также можно подписать документы КЭП, УКЭП и проверить созданную подпись загрузив ее файлы.

Создание подписанного документа

Подписать можно абсолютно любой файл.

Перейдите в пункт “Создание подписи”

сертификат криптопро net

Нажмите на кнопку “Выбрать файл для подписи” и выберите файл, который нужно подписать.

сертификат криптопро net
сертификат криптопро net

Выберите подпись, которой необходимо подписать документ. Обратите внимание – ЭЦП должно быть актуальной.

После выбора ЭЦП станет активной кнопка “Подписать”. Необходимо её нажать. Если документ подписан и нет ошибок – под кнопкой “подписать появится соответствующая надпись. Либо будет указана ошибка с кодом.

Далее перейдите в папку, где хранился подписываемый документ, в нем будет два файла – сам документ и его подпись. Размещать или пересылать необходимо оба документа.

сертификат криптопро net

Соберем проект с поддержкой ГОСТ Р 34. 11-2012 256 bit

Гайд разделен на несколько этапов. Основная инструкция по сборке опубликована вместе с репозиторием DotnetCoreSampleProject – периодически я буду на нее ссылаться.

Первым делом создадим новую папку

… и положим туда все необходимое.

Инструкция делится на 2 этапа – мне пришлось выполнить оба, чтобы решение заработало. В папку добавьте подпапки .\runtime и .\packages

I – Сборка проекта без сборки corefx для Windows

  1. Установите КриптоПро 5.0 и убедитесь, что у вас есть действующая лицензия. – для меня подошла втроенная в ЭП;

  2. Установите core 3.1 sdk и runtime и распространяемый пакет Visual C++ для Visual Studio 2015 обычно ставится вместе со студией; прим.: на II этапе мне пришлось через установщик студии поставить дополнительное ПО для разработки на C++ – сборщик требует предустановленный DIA SDK.

  3. Задайте переменной среды DOTNET_MULTILEVEL_LOOKUP значение 0 – не могу сказать для чего это нужно, но в оригинальной инструкции это есть;

    1. package_windows_debug.zip распакуйте в .\packages

    2. runtime-debug-windows.zip распакуйте в .\runtime

  4. Добавьте источник пакетов NuGet в файле %appdata%\NuGet\NuGet.Config – источник должен ссылаться на путь .\packages в созданной вами папке. Пример по добавлению источника есть в основной инструкеии. Для меня это не сработало, поэтому я добавил источник через VS Community;

  5. git clone https://github.com/CryptoProLLC/NetStandard.Library
    New-Item -ItemType Directory -Force -Path "$env:userprofile\.nuget\packages\netstandard.library"
    Copy-Item -Force -Recurse ".\NetStandard.Library\nugetReady\netstandard.library" -Destination "$env:userprofile\.nuget\packages\"
  6. Склонируйте репизиторий DotnetCoreSampleProject в .\

  7. Измените файл .\DotnetSampleProject\DotnetSampleProject.csproj – для сборок System.Security.Cryptography.Pkcs.dll и System.Security.Cryptography.Xml.dll укажите полные пути к .\runtime;

  8. Перейдите в папку проекта и попробуйте собрать решение. Я собирал через Visual Studio после открытия проекта.

II – Сборка проекта со сборкой corefx для Windows

  1. Выполните 1-3 и 6-й шаги из I этапа;

  2. Склонируйте репозиторий corefx в .\

  3. Выполните сборку запустив .\corefx\build.cmd – на этом этапе потребуется предустановленный DIA SDK

  4. Выполните шаги 5, 7-9 из I этапа. Вместо условного пути .\packages укажите .\corefx\artifacts\packages\Debug\NonShipping, а вместо .\runtime укажите .\corefx\artifacts\bin\runtime\netcoreapp-Windows_NT-Debug-x64

На этом месте у вас должно получиться решение, которое поддерживает ГОСТ Р 34.11-2012 256 bit.

Инструкция по созданию файла, подписанного ЭЦП, с использованием ПО КриптоПро

сертификат криптопро net

Для собственного использования создал инструкцию для подведов. Буду рад, если кому-нибудь пригодится в работе. Ниже представлен текст с картинками из инструкции по созданию подписанного ЭЦП электронного документа, с использованием ПО КриптоПро. В самом конце приложена ссылка на исходник, он выполнен в виде Гугл документа, шаблон – брошюра, формат листа А4. Его можно использовать по своему усмотрению.


Как добавить контейнер при установке сертификата в СКЗИ

Установка личного сертификата КриптоПро CSP

  • В открывшемся окне перейдите на вкладку Сервис и нажмите на кнопку Установить личный сертификат.


  • Установить личный сертификат

  • В следующем окне нужно задать расположение файла сертификата. Для этого выберите путь к файлу с помощью кнопки Обзор.


  • Мастер установки 2

  • Откроется окно Контейнер закрытого ключа. Чтобы задать контейнер вручную, нажмите на кнопку Обзор и выберите его из списка. Мастер установки также может находить контейнер автоматически. Для этого установите соответствующую галочку и в блоке Введённое имя задаёт ключевой контейнер выберите нужный вариант: Пользователя или Компьютера.


  • Мастер установки 3

  • Выберите хранилище, в которое будет установлен сертификат. Проставьте флажок Установить сертификат в контейнер.


  • хранилище сертификатов

  • В окне Завершение работы мастера установки личного сертификата проверьте, правильно ли указаны параметры. Чтобы установить сертификат ЭП, нажмите кнопку Готово.


  • Завершение работы

Установка личного сертификата VipNet CSP

  • На вкладке Контейнеры ключей нажмите кнопку Установить сертификат.


  • Контейнеры ключей

  • Выберите путь к файлу с помощью кнопки Обзор.

  • Выберите хранилище, в которое нужно установить сертификат ЭП: текущего пользователя или компьютера.


  • установить сертификат

  • В следующем окне из выпадающего списка выберите пункт Найти контейнер с закрытым ключом, чтобы поиск произошёл автоматически. Если мастер установки не находит контейнер, можно сделать это вручную. Для этого выберите из выпадающего списка пункт Указать контейнер с закрытым ключом.


  • Найти контейнер с закрытым ключом


    Найти контейнер с закрытым ключом2

  • После выбора контейнера нажмите ОК и Готово, чтобы закрыть окно.

После завершения установки контейнер и сертификат ЭП будут готовы к использованию.

Что делать, если мастер установки не находит контейнер

Если нужного контейнера нет в списке контейнеров СКЗИ, его можно добавить вручную. Для этого в окне Контейнеры ключей нажмите кнопку Добавить контейнер. В открывшемся окне выберите папку, где находится контейнер требуемого ключа, а в ней — нужный файл.

После выбора контейнера откроется окно с подтверждением. В нём нужно подтвердить, что сертификат пользователя устанавливается в системное хранилище сертификатов. Помните, что при перемещении контейнера ключа ЭП в другой каталог, его придётся установить повторно.

Статья была полезна?

Да

Нет

Комментарии для сайта Cackle

Продукты по направлению


Астрал-ЭТ

Электронная подпись для участия в торгах, работы на государственных порталах и электронного документооборота


1С-ЭТП

Сервис получения ЭП и поиска аукционов из программы 1С

Другие направления
Предыдущая статья
Следующая статья
Следующая статья

Немного покодим

Потребуется 2 COM библиотеки: “CAPICOM v2.1 Type Library” и “Crypto-Pro CAdES 1.0 Type Library”. Они содержат необходимые объекты для создания УКЭП.

В этом примере будет подписываться BASE64 строка, содержащая в себе PDF-файл. Немного доработав код можно будет подписать hash-значение этого фала.

Основной код для подписания был взят со страниц Подпись PDF с помощью УЭЦП- Page 2 (cryptopro.ru) и Подпись НЕОПРЕДЕЛЕНА при создании УЭЦП для PDF на c# (cryptopro.ru), но он использовался для штампа подписи на PDF документ. Код из этого гайда переделан под сохранение файла подписи в отдельный файл.

Условно процесс можно поделить на 4 этапа:

  1. Поиск сертификата в хранилище – я использовал поиск по отпечатку в хранилище пользователя;

  2. Чтение байтов подписанного файла;

  3. Сохранение файла подписи рядом с файлом.

using CAdESCOM;
using CAPICOM;
using System;
using System.Globalization;
using System.IO;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Security.Cryptography.Xml;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

public static void Main()
{
  //Сертификат для подписи
	X509Certificate2 gostCert = GetX509Certificate2("отпечаток");
  //Файл, который предстоит подписать
  byte[] fileBytes = File.ReadAllBytes("C:\\Тестовое заявление.pdf");
  //Файл открепленной подписи
  byte[] signatureBytes = SignWithAdvancedEDS(fileBytes, gostCert);
  //Сохранение файла подписи
  File.WriteAllBytes("C:\\Users\\mikel\\Desktop\\Тестовое заявление.pdf.sig", signatureBytes);
}

//Поиск сертификата в хранилище
public static X509Certificate2 GetX509Certificate2(string thumbprint)
{
  X509Store store = CreateStoreObject("My", StoreLocation.CurrentUser);
  store.Open(OpenFlags.ReadOnly);

  X509Certificate2Collection certCollection =
    store.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false);

  X509Certificate2Enumerator enumerator = certCollection.GetEnumerator();
  X509Certificate2 gostCert = null;
  while (enumerator.MoveNext())
    gostCert = enumerator.Current;
  if (gostCert == null)
    throw new Exception("Certificiate was not found!");

  return gostCert;
}

//Создание УКЭП
public static byte[] SignWithAdvancedEDS(byte[] fileBytes, X509Certificate2 certificate)
{
  string signature = "";
  
  try
  {
    string tspServerAddress = @"http://qs.cryptopro.ru/tsp/tsp.srf";

    CPSigner cps = new CPSigner();
    cps.Certificate = GetCAPICOMCertificate(certificate.Thumbprint);
    cps.Options = CAPICOM_CERTIFICATE_INCLUDE_OPTION.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN;
    cps.TSAAddress = tspServerAddress;

    CadesSignedData csd = new CadesSignedData();
    csd.ContentEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
    csd.Content = Convert.ToBase64String(fileBytes);

    //Создание и проверка подписи CAdES BES
    signature = csd.SignCades(cps, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, true, CAdESCOM.CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
    csd.VerifyCades(signature, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, true);
    
    //Дополнение и проверка подписи CAdES BES до подписи CAdES X Long Type 1 
    //(вторая подпись остается без изменения, так как она уже CAdES X Long Type 1)
    signature = csd.EnhanceCades(CADESCOM_CADES_TYPE.CADESCOM_CADES_X_LONG_TYPE_1, tspServerAddress, CAdESCOM.CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
    csd.VerifyCades(signature, CADESCOM_CADES_TYPE.CADESCOM_CADES_X_LONG_TYPE_1, true);
  }
  catch (Exception ex)
  {
    throw ex;
  }
  return Convert.FromBase64String(signature);
}

Пробный запуск

Для подписания возьмем PDF-документ, который содержит надпись “Тестовое заявление.”:

Больше для теста нам ничего не надо
Больше для теста нам ничего не надо

Далее запустим программу и дождемся подписания файла:

сертификат криптопро net

Готово. Теперь можно приступать к проверкам.

Проверка в КриптоАРМ

Время создания ЭП заполнено:

сертификат криптопро net

Штамп времени на подпись есть:

сертификат криптопро net

Доказательства подлинности также заполнены:

сертификат криптопро net

В протоколе проверки есть блоки “Доказательства подлинности”, “Штамп времени на подпись” и “Время подписания”:

сертификат криптопро net
сертификат криптопро net
сертификат криптопро net

Важно отметить, что серийный номер параметров сертификата принадлежит TSP-сервису http://qs.cryptopro.ru/tsp/tsp.srf

Проверка на Госуслугах

сертификат криптопро net

Проверка в Контур. Крипто

сертификат криптопро net

Установка сертификатов

Используя Инструменты КриптоПро, перейдите в пункт меню “Сертификаты” и установите сертификат Федерального казначейства в “доверенные корневые центры сертификации”.

сертификат криптопро net

Затем повторите процедуру для ЭЦП сотрудника, выбрав место установки сертификата “Личное”. Подготовка завершена.

Ссылки на публичные источники

[1] CMS Advanced Electronic Signatures (CAdES) – https://tools.ietf.org/html/rfc5126#ref-ISO7498-2

[2] Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP) – https://www.ietf.org/rfc/rfc3161.txt

[3] X.509 Internet Public Key Infrastructure Online Certificate Status Protocol – OCSP – https://tools.ietf.org/html/rfc2560

[4] Усовершенствованная квалифицированная подпись — Удостоверяющий центр СКБ Контур (kontur.ru)

[5] Поддержка .NET Core (cryptopro.ru)

[6] http://qs.cryptopro.ru/tsp/tsp.srf – TSP-сервис КриптоПро

UPD1: Поменял в коде переменную, куда записываются байты файла подписи.

Также я забыл написать немного про подпись штампа времени – он подписывается сертификатом владельца TSP-сервиса. По гайду это ООО “КРИПТО-ПРО”:

сертификат криптопро net

UPD2: Про библиотеки CAdESCOM и CAPICOM

В ответ @kotov_a и @mayorovp– Все верно: для .NET Core 3.1 сборки System.Security.Cryptography.Pkcs.dll и System.Security.Cryptography.Xml.dll подменяются, так как поддержка этих алгоритмов в бета тестировании [5], а для .NET Framework 4.8 используется CryptoPro.Sharpei – он был перенесен в состав КриптоПро .NET. Последний, судя по информации с портала документации, работает только с .NET Framework.

Если создать пустой проект на .NET Core 3.1, подключив непропатченные библиотеки, то при обращении к закрытому ключу выпадет исключение “System.NotSupportedException” c сообщением “The certificate key algorithm is not supported.”:

.NET Core 3.1 - Исключение без пропатченных библиотек
.NET Core 3.1 – Исключение без пропатченных библиотек
<TargetFramework>netcoreapp3.1</TargetFramework>
...
<ItemGroup>
  <COMReference Include="CAdESCOM">
    <WrapperTool>tlbimp</WrapperTool>
    <VersionMinor>0</VersionMinor>
    <VersionMajor>1</VersionMajor>
    <Guid>e00b169c-ae7f-45d5-9c56-672e2b8942e0</Guid>
    <Lcid>0</Lcid>
    <Isolated>false</Isolated>
    <EmbedInteropTypes>true</EmbedInteropTypes>
  </COMReference>
  <COMReference Include="CAPICOM">
    <WrapperTool>tlbimp</WrapperTool>
    <VersionMinor>1</VersionMinor>
    <VersionMajor>2</VersionMajor>
    <Guid>bd26b198-ee42-4725-9b23-afa912434229</Guid>
    <Lcid>0</Lcid>
    <Isolated>false</Isolated>
    <EmbedInteropTypes>true</EmbedInteropTypes>
  </COMReference>
</ItemGroup>
...

Но при использовании пропатченных библиотек это исключение не выпадает и с приватным ключем можно взаимодействовать:

сертификат криптопро net
<TargetFramework>netcoreapp3.1</TargetFramework>
...
<ItemGroup>
  <Reference Include="System.Security.Cryptography.Pkcs">
    <HintPath>.\corefx\artifacts\bin\runtime\netcoreapp-Windows_NT-Debug-x64\System.Security.Cryptography.Pkcs.dll</HintPath>
  </Reference>
  <Reference Include="System.Security.Cryptography.Xml">
    <HintPath>.\corefx\artifacts\bin\runtime\netcoreapp-Windows_NT-Debug-x64\System.Security.Cryptography.Xml.dll</HintPath>
  </Reference>
</ItemGroup>
...

Также код из гайда работает с .NET Framework 4.8 без использования пропатченных библиотек, но вместо обращения к пространству имен “System.Security.Cryptography”, которое подменяется пропатченными библиотеками для .NET Core, CSP Gost3410_2012_256CryptoServiceProvider будет использован из пространства имен “CryptoPro.Sharpei”:

сертификат криптопро net
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
...
<ItemGroup>
    <COMReference Include="CAdESCOM">
      <Guid>{E00B169C-AE7F-45D5-9C56-672E2B8942E0}</Guid>
      <VersionMajor>1</VersionMajor>
      <VersionMinor>0</VersionMinor>
      <Lcid>0</Lcid>
      <WrapperTool>tlbimp</WrapperTool>
      <Isolated>False</Isolated>
      <EmbedInteropTypes>True</EmbedInteropTypes>
    </COMReference>
    <COMReference Include="CAPICOM">
      <Guid>{BD26B198-EE42-4725-9B23-AFA912434229}</Guid>
      <VersionMajor>2</VersionMajor>
      <VersionMinor>1</VersionMinor>
      <Lcid>0</Lcid>
      <WrapperTool>tlbimp</WrapperTool>
      <Isolated>False</Isolated>
      <EmbedInteropTypes>True</EmbedInteropTypes>
    </COMReference>
    <COMReference Include="CERTENROLLLib">
      <Guid>{728AB348-217D-11DA-B2A4-000E7BBB2B09}</Guid>
      <VersionMajor>1</VersionMajor>
      <VersionMinor>0</VersionMinor>
      <Lcid>0</Lcid>
      <WrapperTool>tlbimp</WrapperTool>
      <Isolated>False</Isolated>
      <EmbedInteropTypes>True</EmbedInteropTypes>
    </COMReference>
  </ItemGroup>
...

Сколько стоит купить лицензию, варианты поставки

  • Cryp7747400

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Временная лицензия на 2 года

  • Windows

  • Временная

  • Срок действия лицензии:
    24 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19017760

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • установка и обновление ПАК «КриптоПро УЦ» осуществляются в г. Москва

  • Windows

  • Обновление

  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19018096

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Временная лицензия на 1 год

  • Windows

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19018126

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Временная лицензия на 2 года

  • Windows

  • Временная

  • Срок действия лицензии:
    24 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19018206

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Сертификат на годовую техническую поддержку не включает Лицензии на право использования СКЗИ “КриптоПро CSP”

  • Windows

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19018207

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Сертификат на годовую техническую поддержку не включает Лицензии на право использования СКЗИ “КриптоПро CSP”

  • Windows Server

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19482410

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Включает техническую поддержку КриптоПро CSP, КриптоПро JCP, КриптоПро TSP SDK, КриптоПро OCSP SDK, КриптоПро ЭЦП SDK (CAdES), КриптоПро ЭЦП Browser Plug-in, КриптоПро .NET SDK

  • Windows

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19018209

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Временная лицензия на 1 год

  • Windows

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19482411

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Временная лицензия на 1 год

  • Windows

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19482416

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Временная лицензия на 1 год

  • Windows

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19482417

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Временная лицензия на 1 год

  • Windows Server

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19482418

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Временная лицензия на 1 год

  • Windows

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19482423

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Временная лицензия на 1 год

  • Windows

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19018223

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Временная лицензия на 1 год

  • Windows

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19018224

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Временная лицензия на 1 год

  • Windows

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19482424

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Временная лицензия на 1 год

  • Windows

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19018133

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Временная лицензия на 1 год

  • Windows

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19018228

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Временная лицензия на 1 год

  • Windows

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19018229

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Временная лицензия на 1 год

  • Windows Server

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП
  • CRYP19018236

  • Не облагается

  • Физическая

  • Русский/Английский

  • Срок поставки лицензионной программы или ключа активации:
    6-8 рабочих дней
  • Временная лицензия на 1 год

  • Windows

  • Временная

  • Срок действия лицензии:
    12 мес.
  • Коммерческая

  • Оплата картой недоступна
  • Только для юр. лиц и ИП

Так, а что надо на выходе?

А на выходе надо получить готовое решение, которое сделает отсоединенную ЭП в формате .sig со штампом времени на подпись и доказательством подлинности. Для этого зададим следующие критерии:

  1. ЭП проходит проверку на портале Госуслуг, через сервис для подтверждения подлинности ЭП формата PKCS#7 в электронных документах;

  2. КриптоАРМ после проверки подписи

    1. Заполнит поле “Время создания ЭП” – в конце проверки появится окно, где можно выбрать ЭП и кратко посмотреть ее свойства

      Стобец "Время создация ЭП"
      Стобец “Время создация ЭП”
    2. В информации о подписи и сертификате (двойной клик по записе в таблице) на вкладке “Штампы времени” в выпадающем списке есть оба значения и по ним заполнена информация:

      1. В протоколе проверки подписи есть блоки “Доказательства подлинности”, “Штамп времени на подпись” и “Время подписания”. Для сравнения: если документ подписан просто КЭП, то отчет по проверке будет достаточно коротким в сравнении с УКЭП.

    3. Контур.Крипто при проверке подписи выдаст сообщение, что совершенствованная подпись подтверждена, сертификат на момент подписания действовал и указано время создания подпись:

      Усовершенствованная подпись подтверждена
      Усовершенствованная подпись подтверждена

    Done.

    Гайд написан с исследовательской целью – проверить возможность подписания документов УКЭП с помощью самописного сервиса на .NET Core 3.1 с формированием штампов подлинности и времени подписания документов.

    Безусловно это решение не стоит брать в работу “как есть” и нужны некоторые доработки, но в целом оно работает и подписывает документы подписью УКЭП.

    КриптоПро CSP

    Для подписи электронных документов, будем использовать программное обеспечение КриптоПро CSP.

    сертификат криптопро net

    Использование иных криптографических программ под административную ответственность руководителей и лиц, использующих ПО СКЗИ, не имеющих действующего сертификата соответствия ФСБ РФ.

    Читайте также:  Ремонт сканеров штрих кода в москве и ремонт сканером
    Оцените статью
    ЭЦП Эксперт
    Добавить комментарий