Ocspcom — криптопроверенная версия

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

С модулем OCSP вы сможете получать актуальную информацию о статусе цифровых сертификатов в реальном времени. Версия продукта 1.5

Для работы совместно с КриптоАРМ Стандарт эта версия подойдет для номеров сборки до 5.4.1.33
@@
Рекомендуем более современную версию:

 КриптоПро OCSP Сlient 2.0

ПАК “КриптоПро OCSP” предназначен для выполнения в составе сертифицированного ФСБ России удостоверяющего центра функций установления статуса сертификатов на основе протокола OCSP (Online Certificate Status Protocol).

ПАК “КриптоПро OCSP” обеспечивает использование международных рекомендаций в части построения инфраструктуры открытых ключей, с учетом применения ГОСТ 28147-89, ГОСТ Р 34.11-94, ГОСТ Р 34.10-2001:

“КриптоПро OCSP Server” функционирует под управлением операционных систем семейств Windows Server 2003 (x86 или x64), Windows Server 2008 (x86 или x64), Windows Server 2008 R2

@@

Содержание
  1. Важное вступление
  2. Общие сведения
  3. Назначение комплекса
  4. КриптоПро OCSP Server
  5. КриптоПро OCSP Client
  6. КриптоПро Revocation Provider
  7. Настройка «КриптоПро» CSP
  8. Настройка работы с Рутокен ЭЦП 2
  9. Получаем тестовый сертификат
  10. Подпись средствами «КриптоПро CSP»
  11. Rosa Crypto Tool
  12. Trusted eSign
  13. Резюме
  14. .
  15. Утилита teamviewer quicksupport
  16. Установка модуля поддержки
  17. Криптопро tsputil (сертифицированная версия 2. 13473)
  18. Соберем проект с поддержкой ГОСТ Р 34. 11-2012 256 bit
  19. Первым делом создадим новую папку
  20. I – Сборка проекта без сборки corefx для Windows
  21. II – Сборка проекта со сборкой corefx для Windows
  22. Поддерживаемые алгоритмы
  23. Классические пассивные usb-токены и смарт-карты
  24. Немного покодим
  25. Пробный запуск
  26. Проверка в КриптоАРМ
  27. Проверка на Госуслугах
  28. Проверка в Контур. Крипто
  29. Что имеем на входе?
  30. Носители с неизвлекаемыми ключами и защищенным обменом сообщениями
  31. Криптопро ocsputil (сертифицированная версия 2. 13431)
  32. Ссылки на публичные источники
  33. Криптопро эцп – загрузка файлов
  34. Так, а что надо на выходе?
  35. Done.
  36. Поддерживаемые технологии хранения ключей
  37. Установка драйверов
  38. Утилита очистки следов установки продуктов криптопро (csp; ipsec; efs etc)

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

В гайде описывается формирование отсоединенной подписи в формате 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

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

Полное наименование изделия: Программно-аппаратный комплекс “Службы УЦ. КриптоПро OCSP”.

Сокращенное наименование изделия: ПАК “КриптоПро OCSP”.

Назначение комплекса

ПАК “КриптоПро OCSP” предназначен для выполнения в составе сертифицированного ФСБ России удостоверяющего центра функций установления статуса сертификатов на основе протокола OCSP (Online Certificate Status Protocol).

ПАК “КриптоПро OCSP” обеспечивает использование международных рекомендаций в части построения инфраструктуры открытых ключей, с учетом применения ГОСТ 28147-89, ГОСТ Р 34.11-94, ГОСТ Р 34.10-2001, ГОСТ Р 34.10/11-2012:

  • RFC 2560 “Internet X.509 Public Key Infrastructure. Online Certificate Status Protocol – OCSP”;
  • RFC 3280 “Internet X.509 Public Key Infrastructure. Certificate and Certificate Revocation List (CRL) Profile”;
  • информационную безопасность по уровню защиты КС2 при использовании в соответствии с требованиями эксплуатационной документации.

Загрузить ПАК “КриптоПро OCSP”

Стоимость ПАК “КриптоПро OCSP”

Приобрести ПАК “КриптоПро OCSP”:

  • серверные компоненты
  • клиентские компоненты
  • Страница для печатиСтраница для печати

На чтение 6 мин. Просмотров 59 Опубликовано 05.06.2022

Содержание

  1. Загрузка файла
  2. Классические пассивные usb-токены и смарт-карты
  3. Криптопро cadescom (актуальная версия)
  4. Криптопро ocspcom (сертифицированная версия 2.0.12919)
  5. Криптопро ocsputil (сертифицированная версия 2.0.13431)
  6. Криптопро tspcom (сертифицированная версия 2.0.13105)
  7. Криптопро tsputil (сертифицированная версия 2.0.13473)
  8. Криптопро эцп – загрузка файлов
  9. Криптопро эцп runtime (сертифицированная версия 2.0.12777)
  10. Носители с неизвлекаемыми ключами и защищенным обменом сообщениями
  11. Обновление от microsoft (kb983557) для windows vista и windows 2008 server
  12. Поддерживаемые алгоритмы
  13. Поддерживаемые технологии хранения ключей
  14. Утилита teamviewer quicksupport
  15. Утилита восстановления настроек безопасности системного реестра:
  16. Утилита для импорта транспортных контейнеров pkcs#12 в контейнеры криптопро csp:
  17. Утилита очистки следов установки продуктов криптопро (csp; ipsec; efs etc):
  18. Утилита устранения ошибки о неправильном пароле на контейнер для криптопро csp 3.6 r2
  19. Центр загрузки
  20. Этап 1: установка модуля поддержки
  21. Этап 2: установка драйверов

Компонента “КриптоПро OCSP Client” предназначена для обращения к серверу “КриптоПро OCSP Server” по протоколу OCSP поверх HTTP, получения от него OCSP-ответов, обработки и работы с OCSP-запросами и OCSP-ответами.

“КриптоПро OCSP Client” представляет собой программную библиотеку, предоставляющую программный интерфейс встраивания этой библиотеки в конкретные прикладные системы для работы с протоколом OCSP. “КриптоПро OCSP Client” не имеет выделенного дистрибутива, его установка должна производиться совместно с установкой продукта, который использует его программный интерфейс. Модули для интеграции “КриптоПро OCSP Client” в установочный пакет другого продукта включены в комплект средств разработки “КриптоПро PKI SDK” вместе с соответствующим руководством разработчика.

В состав ПАК “КриптоПро OCSP” входит приложение КриптоПро OCSPUTIL, предназначенное для работы с протоколом OCSP в командной строке. Данное приложение позволяет создавать OCSP-запросы, получать OCSP-ответы, сохранять запросы и ответы в файлы, обрабатывать их. КриптоПро OCSPUTIL для выполнения своих функций использует “КриптоПро OCSP Client”, и содержит эту программную библиотеку в своём установочном пакете.

КриптоПро OCSP Client предназначен для обращения к службам актуальных статусов сертификатов по протоколу OCSP поверх HTTP, работы с OCSP-запросами и OCSP-ответами

КриптоПро OCSP Client представляет собой программный интерфейс (библиотеку) для работы с протоколом OCSP и не имеет другого интерфейса пользователя. Поэтому КриптоПро OCSP Client не имеет выделенного дистрибутива. Его установка должна производиться совместно с установкой продукта, который использует его программный интерфейс. Модули для интеграции  КриптоПро OCSP Client в установочный пакет другого продукта включены в инструментарий разработчика КриптоПро OCSP SDK вместе с соответствующим руководством.

КриптоПро OCSP Client:

  • Реализует протокол OCSP поверх HTTP по RFC 2560 с учетом использования российских криптографических алгоритмов.
  • Может настраиваться с помощью групповых политик.
  • Позволяет обращаться к серверу по протоколу TLS (SSL), поддерживает различные методы аутентификации и доступ через прокси.
  • Совместим с серверными приложениями.
  • Автоматически проверяет статусы сертификатов OCSP-серверов.
  • Поддерживает расширение id-pkix-ocsp-nocheck. Если такое расширение присутствует в сертификате OCSP-сервера, то статус этого сертификата не проверяется.
  • Автоматически проверяет, уполномочен ли OCSP-сервер Удостоверяющим Центром, издавшим проверяемый сертификат, выдавать информацию о статусе данного сертификата.
  • Дает возможность настройки доверия к конкретным OCSP-серверам.
  • Работает с любым криптопровайдером (CSP).
  • Предоставляет интерфейсы C++ и COM. COM-интерфейс может использоваться в скриптах.
  • Включает низкоуровневый интерфейс для работы с ASN.1-структурами протокола OCSP.
  • Устанавливается с помощью Windows Installer

Полное наименование изделия: Программно-аппаратный комплекс “Службы УЦ. КриптоПро OCSP”.

Сокращенное наименование изделия: ПАК “КриптоПро OCSP”.

В состав ПАК “КриптоПро OCSP” входят следующие компоненты:

  • КриптоПро OCSP Server;
  • КриптоПро OCSP Client;
  • КриптоПро Revocation Provider.

Структурная схема компонент ПАК “КриптоПро OCSP” отражена на рисунке ниже.

Ocspcom — криптопроверенная версия

КриптоПро OCSP Server

  • Реализует протокол OCSP поверх HTTP в соответствии с RFC 2560 с учётом использования российских криптографических алгоритмов;
  • Использует встроенный веб-сервер Microsoft Internet Information Services (IIS), поддерживающий различные методы аутентификации и протокол TLS (SSL);
  • Поддерживает развёртывание нескольких экземпляров службы на одном компьютере;
  • Может получать информацию о статусах сертификатов из следующих источников:
    • папка с одним или несколькими списками отозванных сертификатов (CRL);
    • база данных Центра Регистрации ПАК “КриптоПро УЦ”;
    • база данных Службы сертификации – Microsoft Certification Authority (база данных Центра сертификации ПАК “КриптоПро УЦ”), которая обеспечивает наибольшую актуальность статусов сертификатов в OCSP-ответах.
  • Реализует разграничение доступа по списку контроля доступа, что позволяет задать ролевое разграничение доступа. Возможна посменная работа нескольких операторов службы, каждый из которых обладает своим ключом подписи OCSP-ответов;
  • Поддерживает одновременное использование нескольких криптопровайдеров (CSP) на разных экземплярах службы. Например, один экземпляр может работать с использованием СКЗИ “КриптоПро CSP”, другой – с использованием криптопровайдера “Microsoft Base CSP”.
  • Устанавливается с помощью Windows Installer.

При совместной работе ПАК “КриптоПро УЦ” и ПАК “КриптоПро OCSP Server” для предоставления пользователям актуальной информации о статусах сертификатов по протоколу OCSP рекомендуется использовать совмещенный режим работы. При этом, в качестве источника информации о статусах сертификатов используются базы данных Центра Сертификации и Центра Регистрации ПАК “КриптоПро УЦ”.

КриптоПро OCSP Client

Компонента “КриптоПро OCSP Client” предназначена для обращения к серверу “КриптоПро OCSP Server” по протоколу OCSP поверх HTTP, получения от него OCSP-ответов, обработки и работы с OCSP-запросами и OCSP-ответами.

“КриптоПро OCSP Client” представляет собой программную библиотеку, предоставляющую программный интерфейс встраивания этой библиотеки в конкретные прикладные системы для работы с протоколом OCSP. “КриптоПро OCSP Client” не имеет выделенного дистрибутива, его установка должна производиться совместно с установкой продукта, который использует его программный интерфейс. Модули для интеграции “КриптоПро OCSP Client” в установочный пакет другого продукта включены в комплект средств разработки “КриптоПро PKI SDK” вместе с соответствующим руководством разработчика.

Читайте также:  Новый Android-вирус маскируется под обновление системы - Газета.Ru

В состав ПАК “КриптоПро OCSP” входит приложение КриптоПро OCSPUTIL, предназначенное для работы с протоколом OCSP в командной строке. Данное приложение позволяет создавать OCSP-запросы, получать OCSP-ответы, сохранять запросы и ответы в файлы, обрабатывать их. КриптоПро OCSPUTIL для выполнения своих функций использует “КриптоПро OCSP Client”, и содержит эту программную библиотеку в своём установочном пакете.

КриптоПро Revocation Provider

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

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

Но архитектура CryptoAPI предоставляет возможность подключения и внешних модулей проверки статуса сертификата. Таковым и является продукт “КриптоПро Revocation Provider”, который предназначен для встраивания проверки статусов сертификатов открытых ключей в режиме реального времени по протоколу OCSP в операционные системы семейства Microsoft Windows. При этом менять что-либо в самих приложениях не требуется. “КриптоПро Revocation Provider” вызывается автоматически каждый раз, когда приложение осуществляет действия с сертификатом.

Схема встраивания “КриптоПро Revocation Provider” в операционные системы семейства Microsoft Windows представлена на рисунке:

Ocspcom — криптопроверенная версия

Основные характеристики “КриптоПро Revocation Provider”:

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

Ocspcom — криптопроверенная версия

Поговорим немного про средства электронной подписи (ЭП) с использованием отечественных ГОСТ-алгоритмов в Linux. Несмотря на то, что различные средства и интерфейсы по работе с ЭП в Linux развиты даже лучше, чем в Windows, использовать их не так просто.

Такое положение вещей сохранялось последние несколько лет. Но с конца 2016 года ситуация изменилась в лучшую сторону. Появилось сразу два продукта, которые позволяют работать с электронной подписью по стандарту ГОСТ и шифрованием без использования консоли – это Rosa Crypto Tool и Trusted eSign. Оба эти продукта для работы с криптографией используют «КриптоПро CSP» для Linux. Поэтому, перед тем как обратиться к описанию самих продуктов, поговорим немного про «КриптоПро CSP».

«КриптоПро CSP» под Linux — неоднозначный продукт. С одной стороны, это одно из самых распространенных и мощных сертифицированных средств по работе с криптографией как в Windows, так и в Linux. С другой стороны, для простого человека пользоватся его интерфейсами даже в Windows не так-то просто. А в Linux доступен только консольный интерфейс. Надеюсь, что компания «КриптоПро» в курсе этой ситуации, и в будущем нас ждут новые красивые и удобные интерфейсы, как для Windows, так и для Linux.

Для настройки нам понадобится:

  • Любимый дистрибутив Linux. Я использовал Ubuntu Linux 16.04 LTS и ROSA Fresh GNOME R8;
  • Сертифицированная версия КриптоПро CSP 4.0 R2 для Windows, UNIX и macOS;
  • Рутокен ЭЦП 2.0.

Настройка «КриптоПро» CSP

Несмотря на то, что есть несколько неплохих статей по настройке «КриптоПро CSP» под Linux (например, тут или тут), я опишу здесь свой вариант. Основная причина в том, что большинство инструкций написаны для «Крипто Про CSP» версии 3.x. А современная версия «КриптоПро CSP» 4.0 не является 100% совместимой с 3.x. Дополнительная причина – всегда приятно иметь полную инструкцию по настройке в одном месте, а не переключаться с одного окна на другое.

Приступаем к настройке.

Скачиваем «КриптоПро CSP» для Linux с официального сайта КриптоПро — www.cryptopro.ru/downloads

Распаковываем «КриптоПро CSP» для Linux:

tar -zxf ./linux-amd64_deb.tgz

Далее у нас есть 2 варианта – автоматическая установка и установка вручную. Автоматическая установка запускается командой:

sudo ./install.sh 

или

sudo ./install_gui.sh

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

Если что-то пошло не так, или вы по тем или иным причинам хотите использовать установку в ручном режиме, то вам необходимо выполнить:

dpkg -i ./cprocsp-curl-64_4.0.0-4_amd64.deb lsb-cprocsp-base_4.0.0-4_all.deb lsb-cprocsp-capilite-64_4.0.0-4_amd64.deb lsb-cprocsp-kc1-64_4.0.0-4_amd64.deb lsb-cprocsp-rdr-64_4.0.0-4_amd64.deb

Для установки пакетов в ROSA используйте urpmi, вместо dpkg -i.

Устанавливаем лицензию для «КриптоПро CSP» для Linux и проверяем, что все работает нормально:

cpconfig -license -set <серийный_номер>
cpconfig -license –view

Мы должны получить что-то вроде:

License validity:
XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
Expires: 3 month(s) 2 day(s)
License type: Server.

Настройка работы с Рутокен ЭЦП 2

Сделаем небольшое отступление. Для работы с электронной подписью и шифрованием нам не обойтись без ключевых пар и сертификатов. Надежное хранение закрытых ключей – один из основных факторов безопасности. А более надежных средств хранения, чем токен или смарт-карта, человечество пока не придумало. Я буду использовать Рутокен ЭЦП 2.0, который имеет сертификат ФСБ и поддерживает работу как с новыми, так и со старыми ГОСТами.

Ocspcom — криптопроверенная версия

Для работы с токенами в ОС Linux есть масса различных средств и драйверов. Для описания всех этих средств понадобится отдельная статья. Поэтому я не буду подробно описывать, как это работает, и почему нам нужны именно эти пакеты.

Устанавливаем пакеты для работы с Рутокен ЭЦП 2.0:

apt-get install libpcsclite1 pcscd libccid

Нам также необходимо установить пакеты КриптоПро CSP для поддержки работы с токенами:

dpkg -i ./cprocsp-rdr-gui-gtk-64_4.0.0-4_amd64.deb ./cprocsp-rdr-rutoken-64_4.0.0-4_amd64.deb ./cprocsp-rdr-pcsc-64_4.0.0-4_amd64.deb ./lsb-cprocsp-pkcs11-64_4.0.0-4_amd64.deb

Получаем тестовый сертификат

Перед тем как перейти непосредственно к работе с подписью, надо сгенерировать ключевую пару и создать сертификат электронной подписи. Если у вас уже есть Рутокен с контейнером «КриптоПро», то эту часть можно смело пропустить.

Воспользуемся тестовым УЦ компании «КриптоПро» по адресу — https://www.cryptopro.ru/certsrv/
Создаем запрос на сертификат с параметрами по умолчанию.

Ocspcom — криптопроверенная версия

Проверим, что сертификат получен успешно.

Чтобы убедиться, что «КриптоПро CSP» успешно увидел токен, выполним:

list_pcsc

Мы должны получить что-то вроде:

Aktiv Rutoken ECP 00 00

Теперь проверяем, что сертификат на токене видится успешно:

csptest -keyset -enum_cont -verifyc -fq

Получаем:

CSP (Type:80) v4.0.9014 KC1 Release Ver:4.0.9842 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 13476867
\\.\Aktiv Rutoken ECP 00 002506788-dfcd-54c9-3a5e-e0a82a2d7f0
OK.
Total: SYS: 0,020 sec USR: 0,160 sec UTC: 0,870 sec
[ErrorCode: 0x00000000]

Записываем в хранилище сертификатов КриптоПро информацию об этом сертификате:

csptestf -absorb -cert -pattern 'rutoken'

Match: SCARD\rutoken_ecp_351d6671
csptestf -absorb -cert -pattern 'rutoken'
Match: SCARD\rutoken_ecp_351d6671\0A00\62AC
OK.
Total: SYS: 0,010 sec USR: 0,140 sec UTC: 1,040 sec
[ErrorCode: 0x00000000]
A00AC OK. Total: SYS: 0,010 sec USR: 0,140 sec UTC: 1,040 sec [ErrorCode: 0x00000000]

Проверим, что сертификат успешно сохранился в хранилище:

certmgr -list -cert -store uMy

Certmgr 1.0 (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores
 
=============================================================================
1-------
Issuer              : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject             : CN=Trusted eSign Test
Serial              : 0x120019F5D4E16D75F520A0299B00000019F5D4
SHA1 Hash           : 0x016f443df01187d5500aff311ece5ea199ff863e
SubjKeyID           : 204e94f63c68595e4c521357cf1d9279bff6f6e5
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 22/02/2017  10:53:16 UTC
Not valid after     : 22/05/2017  11:03:16 UTC
PrivateKey Link     : Yes                
Container           : SCARD\rutoken_ecp_351d6671
certmgr -list -cert -store uMy
Certmgr 1.0 (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores
=============================================================================
1-------
Issuer              : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject             : CN=Trusted eSign Test
Serial              : 0x120019F5D4E16D75F520A0299B00000019F5D4
SHA1 Hash           : 0x016f443df01187d5500aff311ece5ea199ff863e
SubjKeyID           : 204e94f63c68595e4c521357cf1d9279bff6f6e5
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 22/02/2017  10:53:16 UTC
Not valid after     : 22/05/2017  11:03:16 UTC
PrivateKey Link     : Yes                
Container           : SCARD\rutoken_ecp_351d6671\0A00\62AC
Provider Name       : Crypto-Pro GOST R 34.10-2012 KC1 CSP
Provider Info       : ProvType: 80, KeySpec: 1, Flags: 0x0
CA cert URL         : http://testca.cryptopro.ru/CertEnroll/test-ca-2014_CRYPTO-PRO%20Test%20Center%202.crt
OCSP URL            : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP                 : http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO%20Test%20Center%202.crl
Extended Key Usage  : 1.3.6.1.5.5.7.3.2
=============================================================================
[ErrorCode: 0x00000000]
A00AC Provider Name : Crypto-Pro GOST R 34.10-2012 KC1 CSP Provider Info : ProvType: 80, KeySpec: 1, Flags: 0x0 CA cert URL : http://testca.cryptopro.ru/CertEnroll/test-ca-2014_CRYPTO-PRO%20Test%20Center%202.crt OCSP URL : http://testca.cryptopro.ru/ocsp/ocsp.srf CDP : http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO%20Test%20Center%202.crl Extended Key Usage : 1.3.6.1.5.5.7.3.2 ============================================================================= [ErrorCode: 0x00000000]

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

Подпись средствами «КриптоПро CSP»

В составе «КриптоПро CSP» есть утилита csptestf, позволяющая выполнять различные криптографические операции. Как я уже писал выше, у этой утилиты есть 2 недостатка:

  • Отсутствие хорошей документации;
  • Отсутствие графического интерфейса.

Подписать можно с помощью команды:

csptestf –sfsign –sign –in <имя файла> -out <имя файла> -my ‘Trusted eSign Test’ –detached –alg GOST94_256

Здесь,
my — параметр, в котором надо указать часть Common Name сертификата для подписи;
detached — позволяет создать открепленную подпись;
alg GOST94_256 — задает алгоритм хэширования, который будет использоваться при создании подписи.

Более подробную информацию о возможных параметрах вы можете получить, выполнив команду:

csptestf –sfsign

Такой интерфейс отлично подходит для подготовленного пользователя или для автоматизации операций в скриптах.

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

Rosa Crypto Tool

Как следует из названия, это утилита для работы с электронной подписью и шифрованием для дистрибутива ROSA Linux. В данный момент утилита доступна в репозиториях Rosa Linux и Alt Linux.

Эта утилита разрабатывается одним человеком – Михаилом Вознесенским. У нее простой, но удобный интерфейс. На данный момент утилита находится в активной разработке – с ноября 2016 года мне удалось протестировать три версии. Последняя версия, доступная на момент написание статьи — 0.2.2. Сейчас утилита поддерживает работу только с «КриптоПро CSP» для Linux, однако в ближайшее время будет добавлена поддержка других криптопровайдеров.

Читайте также:  Как добавить логотип в почту Яндекс, Gmail - как вставить логотип в подпись почты

Что внутри? Утилита написана на Python с использованием PyQt4 для графического интерфейса.

Установить ее можно, использовав «Управление программами» в Rosa Linux.

Ocspcom — криптопроверенная версия

Вставляем токен и запускаем утилиту.

Ocspcom — криптопроверенная версия

Видим, что токен определился успешно и был найден наш сертификат.

Интерфейс программы настолько прост, что описывать и показывать в статье все его функции не имеет смысла. Попробуем только подписать файл.

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

Ocspcom — криптопроверенная версия

Нажимаем «OK» и получаем информацию о том, что файл был подписан успешно.

Ocspcom — криптопроверенная версия

Основное достоинство этой утилиты в том, что она совершенно бесплатная, в отличии нашего следующего продукта.

По сравнению с использованием «КриптоПро CSP» из консоли:

+ На порядок проще использовать;
— Отсутствуют различные параметры подписи.

Исходный код программы доступен в публичном репозитории на ABF:
abf.io/uxteam/rosa-crypto-tool-devel
Система контроля версий, которую использует «НТЦ ИТ РОСА», интегрирована в сборочную среду и базируется на Git. Можно вполне использовать любой клиент git.

Надеюсь, разработчики других отечественных дистрибутивов Linux, таких как Astra Linux, GosLinux и другие добавят в свои дистрибутивы пакеты с rosa-crypto-tool.

Trusted eSign

Второй продукт, про который мы поговорим, это Trusted eSign от компании “Цифровые технологии”. Она известна на российском рынке ИБ как разработчик средства по работе с подписью и шифрованием для ОС Windows – «КриптоАРМ».

Главное, не путать этот продукт с Trusted.eSign – web-сервисом по работе с подписью этой же компании.

Найти продукт на сайтах компании “Цифровые технологии” непросто. Небольшое описание есть в магазине http://www.cryptoarm.ru/shop/trusted_esign, продукт также можно скачать в разделе «Центр загрузки» на сайте trusted.ru — https://trusted.ru/support/downloads/?product=133

К сожалению, продукт пока доступен только в виде deb пакета для 64-битных систем. С чем связано такое ограничение, непонятно. Будем надеяться, что в ближайшее время компания выпустит и rpm пакет, а также версии для 32-битных дистрибутивов Linux.

Скачиваем с официального сайта deb-пакет и устанавливаем командой:

dpkg –i ./trustedesign-x64.deb

Запускаем Trusted eSign.

Ocspcom — криптопроверенная версия

Сразу видно, что разработка не обошлась без дизайнера. Никакого сарказма. Все действия делаются просто и логично, а внешний вид радует глаз. К сожалению, большинство средств и программ в области ИБ от российских разработчиков разработаны без привлечения UX-специалистов и дизайнеров и заставляют своих пользователей страдать и плакать кровавыми слезами. Создается впечатление, что другими средства информационной безопасности просто не могут быть. “Цифровые технологии” опровергают это. Плата за красоту и удобство – необходимость платить за лицензию.

Но вернемся к подписи.

Выбираем раздел “Электронная подпись”:

Ocspcom — криптопроверенная версия

Выбираем «Сертификат для подписи»:

Ocspcom — криптопроверенная версия

Выбираем файлы для подписи и жмем «Подписать»:

Ocspcom — криптопроверенная версия

Что под капотом? Процитирую с сайта: “Приложение создано на современном движке Electron, для вызова криптографических операций применяется библиотека OpenSSL. Совместимо с СКЗИ “КриптоПро CSP 4.0” и поддерживает все криптографические алгоритмы, реализованные в нем.” Для тех, кто ещё не в курсе Electron — это фреймворк для создания десктопных приложений на платформе node.js.

Сравним Trusted eSign с Rosa crypto tool:

+ Более удобный и красивый интерфейс
— Платная лицензия

Резюме

Подведем итог. В конце 2016 – начале 2017 года наметился неплохой прогресс в средствах по работе с электронной подписью под Linux. Информационная безопасность начинает поворачиваться к пользователю лицом, и с каждым годом требуется все меньше действий для такого простого действия, как подписать или зашифровать файл с использованием отечественных алгоритмов.

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

Такое развитие не может не радовать, особенно когда это происходит под Linux.

.

Наверняка есть немало пользователей, особенно пользователей Linux, кто считает, что консольных утилит достаточно. А также специалистов по информационной безопасности, которые считают, что дизайн и удобство — излишество в ИБ. Но я не могу с ними согласиться. Консольные утилиты, несомненно, идеальны для автоматизации. Но большинству пользователей удобнее работать с графическими интерфейсами. Даже в Linux.

Утилита teamviewer quicksupport

Программа для удалённого подключения к компьютеру

TeamViewer QuickSupport для Windows (версия 15.9.4.0)

TeamViewer QuickSupport для Windows (версия 13.2.26558)

TeamViewer QuickSupport для macOS (версия 15.9.4.0)

TeamViewer QuickSupport для macOS (версия 13.2.26558)

Установка модуля поддержки

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

  1. Переходите на страницу загрузки модулей к рассматриваемой СКЗИ, расположенной на официальном ресурсе разработчиков Рутокен. Представлены модули как для CSP, так и для JSP-варианта КриптоПро, версии первых также разделены по разрядности. Для загрузки нужного компонента просто кликните по его имени.
  2. Загрузить модуль Рутокен для КриптоПро для установки драйверов к устройству

  3. Для продолжения загрузки потребуется принять лицензионное соглашение – ознакомьтесь с документом, затем отметьте пункт «Условия Лицензионного соглашения прочитаны и приняты в полном объеме» и нажмите на кнопку .
  4. Продолжить загрузку модуля Рутокен для КриптоПро для установки драйверов к устройству

  5. Загрузите инсталлятор модуля в любое подходящее место, после чего запускайте исполняемый файл. Нажимайте в первом окошке .
  6. Начало установки модуля Рутокен для КриптоПро для инсталляции драйверов к устройству

  7. В следующем шаге нажмите .
  8. Продолжение установки модуля Рутокен для КриптоПро для инсталляции драйверов к устройству

  9. Инсталляция происходит в автоматическом режиме, потому просто дождитесь окончания процедуры.
    Устанвока модуля Рутокен для КриптоПро для инсталляции драйверов к устройству
    Для закрытия инсталлятора нажмите кнопку .

Окончание установки модуля Рутокен для КриптоПро для инсталляции драйверов к устройству

На этом первый этап завершен и можно переходить к следующему.

Криптопро tsputil (сертифицированная версия 2. 13473)

Данная версия приложения командной строки КриптоПро TSPUTIL для работы со штампами времени сертифицирована в составе ПАК «Службы УЦ» версии 2.0 по классам защиты КС2 и КС3. Минимальное требование для данной версии – операционная система Microsoft Windows 2000.

Соберем проект с поддержкой ГОСТ Р 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.

Поддерживаемые алгоритмы

В КриптоПро CSP 5.0 наряду с российскими реализованы зарубежные криптографические алгоритмы. Теперь пользователи имеют возможность использовать привычные носители ключей для хранения секретных ключей RSA и ECDSA.

Электронная подпись

ГОСТ Р 34.10-2022 (ГОСТ 34.10-2022), ECDSA, RSA

Хэш-функции

ГОСТ Р 34.11-2022 (ГОСТ 34.11-2022), SHA-1, SHA-2

Шифрование

ГОСТ Р 34.12-2022 (ГОСТ 34.12-2022), ГОСТ Р 34.13-2022 (ГОСТ 34.13-2022), ГОСТ 28147-89, AES (128/192/256), 3DES, 3DES-112, DES, RC2, RC4

Таблица алгоритмов, поддерживаемых разными версиями КриптоПро CSP.

Классические пассивные usb-токены и смарт-карты

Большинство пользователей предпочитает быстрые, дешевые и удобные решения для хранения ключей. Как правило, предпочтение отдаётся токенам и смарт-картам без криптографических сопроцессоров. Как и в предыдущих версиях провайдера, в КриптоПро CSP 5.0 сохранена поддержка всех совместимых носителей производства компаний Актив, Аладдин Р.Д., Gemalto/SafeNet, Multisoft, NovaCard, Rosan, Alioth, MorphoKST и СмартПарк.

Кроме того, конечно, как и раньше поддерживаются способы хранения ключей в реестре Windows, на жестком диске, на флеш-накопителях на всех платформах.

Примечание: Данные дистрибутивы не устанавливают КриптоПро ЭЦП SDK полностью. Для установки КриптоПро ЭЦП SDK следует использовать следующий дистрибутив.

Данная версия КриптоПро OCSPCOM сертифицирована в составе ПАК «Службы УЦ» версии 2.0 по классам защиты КС2 и КС3.

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

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

Читайте также:  RW1990 электронный ключ-заготовка

В этом примере будет подписываться 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-документ, который содержит надпись “Тестовое заявление.”:

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

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

Ocspcom — криптопроверенная версия

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

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

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

Ocspcom — криптопроверенная версия

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

Ocspcom — криптопроверенная версия

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

Ocspcom — криптопроверенная версия

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

Ocspcom — криптопроверенная версия
Ocspcom — криптопроверенная версия
Ocspcom — криптопроверенная версия

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

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

Ocspcom — криптопроверенная версия

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

Ocspcom — криптопроверенная версия

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

  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. Контур.Крипто бесплатен, но требует регистрации. В нем также можно подписать документы КЭП, УКЭП и проверить созданную подпись загрузив ее файлы.

Носители с неизвлекаемыми ключами и защищенным обменом сообщениями

В КриптоПро CSP 5.0 добавлена поддержка носителей с неизвлекаемыми ключами, реализующих протокол SESPAKE, позволяющий провести аутентификацию, не передавая в отрытом виде пароль пользователя, и установить шифрованный канал для обмена сообщений между криптопровайдером и носителем.

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

Компании Актив, ИнфоКрипт и СмартПарк разработали новые защищенные токены, которые поддерживают данный протокол.

Криптопро ocsputil (сертифицированная версия 2. 13431)

Данная версия приложения командной строки КриптоПро OCSPUTIL для работы с протоколом OCSP сертифицирована в составе ПАК «Службы УЦ» версии 2.0 по классам защиты КС2 и КС3.

Данная версия КриптоПро TSPCOM сертифицирована в составе ПАК «Службы УЦ» версии 2.0 по классам защиты КС2 и КС3.

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

[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-сервиса. По гайду это ООО “КРИПТО-ПРО”:

Ocspcom — криптопроверенная версия

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>
...

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

Ocspcom — криптопроверенная версия
<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”:

Ocspcom — криптопроверенная версия
<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>
...

Криптопро эцп – загрузка файлов

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

Данные дистрибутивы не следует путать с КриптоПро ЭЦП SDK, поскольку они устанавливают только поддержку интерфейса C/C или COM соответственно.

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

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

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

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

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

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

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

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

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

    Done.

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

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

    Поддерживаемые технологии хранения ключей

    В криптопровайдере КриптоПро CSP 5.0 впервые появилась возможность использования ключей, хранящихся на облачном сервисе КриптоПро DSS, через интерфейс CryptoAPI. Теперь ключи, хранимые в облаке, могут быть легко использованы как любыми пользовательскими приложениями, так и большинством приложений компании Microsoft.

    Установка драйверов

    После инсталляции модуля поддержки можно установить непосредственно драйвера.

    1. Переходите на страницу загрузки драйверов Рутокен. Там представлен только один установочный пакет – нажмите на его имя.
    2. Скачать драйверы Рутокен для КриптоПро с официального сайта

    3. На этот раз не придётся принимать лицензионное соглашение – после загрузки следующей страницы автоматически начнётся скачивание установочного файла. Сохраните его в подходящий каталог.
    4. По окончании переходите в директорию со скачанным инсталлятором и запускайте его. Проверьте, отмечен ли пункт о добавлении ярлыка управления драйверами на , и нажимайте .
    5. Начало установки драйверов Рутокен для КриптоПро

    6. Начнётся процедура инсталляции программного обеспечения. Как правило, она не длится дольше 5-10 минут.
    7. Процесс установки драйверов Рутокен для КриптоПро

    8. Когда установка закончится, воспользуйтесь кнопкой для завершения работы инсталлятора.

    Конец установки драйверов Рутокен для КриптоПро

    На этом наша сегодняшняя задача решена — установка драйверов Рутокен для КриптоПро полностью выполнен.

    Утилита очистки следов установки продуктов криптопро (csp; ipsec; efs etc)

    Утилита предназначена для очистки компьютера от неудалённых элементов продуктов КриптоПро. Рекомендуется сначала удалить установленные продукты через “Установку и удаление программ”, перезагрузить компьютер, и затем запустить cspclean.exe. После завершения работы утилиты обязательно перезагрузите компьютер.

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

    Adblock
    detector