УКЭП с TSP, OSCP и C# .NET Core 3.1 / Хабр

УКЭП с TSP, OSCP и C# .NET Core 3.1 / Хабр ЭЦП

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

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

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

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

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

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

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

Лицензирование ПО и версии

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

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

Код основан на репозиториях corefx и DotnetCoreSampleProject — в последнем проще протестировать свои изменения перед переносом в основной проект и он будет отправной точкой по сборке corefx. Судя по записям с форума компании [5], решение для .

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

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

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

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

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

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

      1. Подпись:

        УКЭП с TSP, OSCP и C# .NET Core 3.1 / Хабр
      2. Доказательства подлинности:

        УКЭП с TSP, OSCP и C# .NET Core 3.1 / Хабр
    3. В протоколе проверки подписи есть блоки «Доказательства подлинности», «Штамп времени на подпись» и «Время подписания». Для сравнения: если документ подписан просто КЭП, то отчет по проверке будет достаточно коротким в сравнении с УКЭП.

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

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

Done.

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

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

Ii — сборка проекта со сборкой corefx для windows

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

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

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

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

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

Крипто про просит ввести лицензию как исправить

Шаг 1

Перейдите по ссылке:

Согласитесь со всеми всплывающими окнами, если таковые будут.

Вы должны увидеть страницу такого вида:

Если Вы видите такое окно, то переходите к шагу 2, если нет, то читайте дальше.

Если Вы видите такое окно, значит не установлен или не доступен КриптоПро CSP, см. пункт как проверить установку или установить КриптоПро CSP.

Если Вы видите такое окно, значит CAdESBrowserPlug-in не установлен или не доступен, см. пункт как проверить установлен ли плагин, Как убедиться, что правильно настроен браузер.

Шаг 2

В поле Сертификат выделите нужный сертификат и нажмите Подписать.

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

Если после нажатия кнопки Подписать Вы видите такой результат, значит Вы успешно выполнили подпись и КриптоПро ЭЦП Browser plug-in работает в штатном режиме.

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

Как проверить установлен ли КриптоПроCSP

Проверить установлен ли КриптоПро CSP можно зайдя в панель управления Программы и компоненты (Установка и удаление программ). Там же можно увидеть версию установленного продукта:

Криптопро csp: истекла линцезия / как ввести лицензию криптопро csp? / как ввести серийный номер?

Данное сообщение говорит о том, что у Вас истекла лицензия КриптоПРО CSP.

1. Как проверить срок действия лицензии КриптоПРО CSP?

Нажмите меню «Пуск» – «Все программы» – выберете папку «КРИПТО-ПРО» – запустите «Управление лицензиями КриптоПро KPI». В открывшемся окне выберите продукт «КриптоПРО CSP». Срок действия лицензии будет указан в первой строке.

2. Как ввести лицензию КриптоПро CSP?

Для того, чтобы приобрести серийный номер, обратитесь к Вашему менеджеру. После приобретения продукта, бланк с серийным номером придет на Ваш e-mail.

2.1 Из программы «Управление лицензиями КриптоПро KPI».

В открывшемся окне заполните сведения об организации, пользователе и введите серийный номер с бланка.

2.2 Из программы «КриптоПро CSP».

В открывшемся окне заполните сведения об организации, пользователе и введите серийный номер с бланка.

Остались вопросы?

Отдел технической поддержки

Источник

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

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

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

Отображение

УК РФ Статья 146. Нарушение авторских и смежных прав. 1. Присвоение авторства (плагиат). Наказывается штрафом в размере до двухсот тысяч рублей или в размере заработной платы или иного дохода осужденного за период до восемнадцати месяцев, либо обязательными работами на срок до четырехсот восьмидесяти часов, либо исправительными работами на срок до одного года, либо арестом на срок до шести месяцев. 2.

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

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

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

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

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

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

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

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

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

Проверка в криптоарм

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

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

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

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

Соберем проект с поддержкой гост р 34.11-2022 256 bit

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

Это вообще законно?

С удовольствием узнаю ваше мнение в комментариях.

Оцените статью
ЭЦП64
Добавить комментарий