Содержание

Перейти к концу метаданных
Переход к началу метаданных

КриптоПро CSP

Назначение

Криптопровайдер КриптоПро CSP предназначен для:

  • авторизации и обеспечения юридической значимости электронных документов при обмене ими между пользователями, посредством использования процедур формирования и проверки электронной подписи (ЭП) в соответствии с отечественными стандартами ГОСТ Р 34.10-2001 / ГОСТ Р 34.10-2012 (с использованием ГОСТ Р 34.11-94 / ГОСТ Р 34.11-2012);
  • обеспечения конфиденциальности и контроля целостности информации посредством ее шифрования и имитозащиты, в соответствии с ГОСТ 28147-89;
  • обеспечения аутентичности, конфиденциальности и имитозащиты соединений по протоколу TLS;
  • контроля целостности системного и прикладного программного обеспечения для его защиты от несанкционированных изменений и нарушений правильности функционирования;
  • управления ключевыми элементами системы в соответствии с регламентом средств защиты.

https://www.cryptopro.ru/products/csp

Установка КриптоПро CSP


Архив с программным обеспечением (КриптоПро CSP) можно загрузить c официального сайта www.cryptopro.ru, предварительно зарегистрировавшись на сайте.

Для ОС AstraLinux следует загрузить пакет:

КриптоПро CSP 4.0 для Linux (x64, deb) -  пакет для 64 разрядной системы.

Пробный период использования КриптоПро CSP составляет 3 месяца, по истечении которых необходимо приобрести полноценную лицензию.


К моменту написания статьи, была использована сертифицированная версия ПО «КриптоПро» «4.0 R3».

Для примера был проделан следующий алгоритм действий:

1) Загрузка архива с сертифицированной версией ПО «КриптоПро» «4.0 R3»:

Название полученного файла: «linux-amd64_deb.tgz».

2) Открыть "Терминал Fly" (alt+T)

3) Разархивируем скаченный архив в терминале командой:

tar -zxf linux-amd64_deb.tgz

5) Перейдем в директорию с ПО 

cd /linux-amd64_deb

6) выполним установку ПО с помощью запуска скрипта "install.sh" или  "instal_gui.sh" командой:

sudo ./install_gui.sh

* Выбрать необходимые модули, библиотеки.


Описание необходимых пакетов КриптоПро



ПакетОписание
Базовые пакеты:
cprocsp-curlБиблиотека libcurl с реализацией шифрования по ГОСТ
lsb-cprocsp-baseОсновной пакет КриптоПро CSP
lsb-cprocsp-capiliteИнтерфейс CAPILite и утилиты
lsb-cprocsp-kc1Провайдер криптографической службы KC1
lsb-cprocsp-rdrПоддержка ридеров и RNG
Дополнительные пакеты:
cprocsp-rdr-gui-gtkГрафический интерфейс для диалоговых операций
cprocsp-rdr-rutokenПоддержка карт Рутокен
cprocsp-rdr-jacartaПоддержка карт JaCarta
cprocsp-rdr-pcscКомпоненты PC/SC для ридеров КриптоПро CSP
lsb-cprocsp-pkcs11Поддержка PKCS11


Для просмотра всех установленых пакетов Криптопро CSP, следует ввести команду:

dpkg -l | grep cprocsp


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

Для того, чтобы не вводить каждый раз полный путь к утилитам КриптоПро CSP, в терминале FLY следует ввести команду:

export PATH="$(/bin/ls -d /opt/cprocsp/{s,}bin/*|tr '\n' ':')$PATH"

 

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

Для корректной работы с токеном/смарт-картой обязательно требуется установить:

библиотека libccid, libgost-astra , пакеты pcscd, libpcsclite1

sudo apt install libccid pcscd libpcsclite1 libgost-astra

Пакеты с модулем поддержки для:

Рутокен: https://www.rutoken.ru/support/download/rutoken-for-cp/

Алладин: https://www.aladdin-rd.ru/support/downloads/jacarta

После установки пакетов с модулем поддержки токена следует перезагрузить службу pcscd:

sudo service pcscd restart


Проверка лицензии

Проверить срок истечения лицензии можно командой:

/opt/cprocsp/sbin/amd64/cpconfig -license -view


Установка лицензии


Для установки другой лицензии следует выполнить команду :

sudo /opt/cprocsp/sbin/amd64/cpconfig -license -set <ваш_лицензионный_номер>

Установка КриптоПро ЭЦП Browser plug-in


a)Установить пакет alien, необходимый для конвертации rpm-пакетов в deb-формат

$ sudo apt install alien

б) Загрузить архив cades_linux_amd64.zip

https://www.cryptopro.ru/products/cades/plugin/get_2_0

в) Распаковать архив cades_linux_amd64.zip перейти в каталог с распакованными файлами и выполнить команды:

alien -dc cprocsp-pki-2.0.0-amd64-cades.rpm

alien -dc cprocsp-pki-2.0.0-amd64-plugin.rpm

г) Установить deb-пакеты:

dpkg -i cprocsp-pki-cades_2.0.0-2_amd64.deb cprocsp-pki-plugin_2.0.0-2_amd64.deb

д) Дальнейшие настройки различаются в зависимости от используемого браузера:


    • Браузер Chrome

Запустите Chrome и дождитесь оповещения об установленном расширении "CryptoPro Extension for CAdES Browser Plug-in". Включите это расширение. Если на Вашем компьютере ранее уже выполнялась установка КриптоПро ЭЦП Browser plug-in, а потом он был удален, потребуется отдельно установить расширение. Для этого перейдите по ссылке и установите расширение из интернет-магазина Chrome.


    • Браузер Opera или Яндекс.Браузер

      расширение доступно по ссылке.



    • Браузер Firefox

      скачайте расширение по ссылке и установите в браузер самостоятельно.


 Проверка корректности установки на странице проверки плагина

Для этого в открывшемся окне подтвердите доступ путем нажатия кнопки "Да".



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


е) Сайт проверки плагина

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

В случае если у Вас отсутствуют "личные сертификаты" → нажимаем на корневой сертификат тестового УЦ - Просмотреть - Подробности - Экспортировать - Сохранить.

Открываем эмулятор терминала и выполняем от root`а:

/opt/cprocsp/bin/amd64/certmgr -inst -cert -file /home/u/Загрузки/CRYPTO-PROTestCenter2.crt -store mroot


Перезапускаем браузер.

Заходим на страницу проверки работы КриптоПро ЭЦП Browser Plug-in и нажимаем получить, выполняем все всплывающие требования. Сертификат получен.


Альтернативный метод получения тестового сертификата

1) Перейдите на сайт Тестового Удостоверяющего центра ООО "КРИПТО-ПРО"

2) Для получение сертификата, перейдите в раздел Сформировать ключи и отправить запрос на сертификат

3) Заполните идентифицирующие сведения:

4) Нажмите "Выдать", после чего выйдет GTK-окно для создания случайных последовательностей:

5) После чего, CryptoPro CSP потребует вести новый пароль для контейнера

6) Тестовый УЦ КриптоПро уведомит нас о том, что сертификат выдан

7) Пройти по ссылке и установить сертификат, введя пароль контейнера.

8) После успешной установки сертификата, следует перейти на страницу проверки создания электронной подписи CAdES-BES

Получение тестового сертификата с помощью cli

Для запроса, получения и установки сертификата с тестового УЦ "КриптоПро"  - можно, воспользоваться одной командой:
cryptcp -creatcert -rdn 'E=email@astralinux.ru, CN=имя_сертификата' -cont '\\.\HDIMAGE\имя_контейнера' -hashalg 1.2.643.7.1.1.2.2


Носители и контейнеры


Идентификация токена


Чтобы узнать модель подключенного токена, следует ввести команду:

/opt/cprocsp/bin/amd64/csptest -card -enum -v -v

После чего система выдаст информацию о подключенном устройстве:


Проверить наличие носителей с контейнерами  можно с помощью команды:
/opt/cprocsp/bin/amd64/csptest -keyset -verifycontext -enum -unique

в формате FQCN, отображается имя носителя:

/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifyc

В этом случае будет выведен список носителей с контейнерами в следующем формате:

Где \\.\HDIMAGE - локальный носитель, \\.\HDIMAGE\TestCont123 - название контейнера, \\.\Aktiv Rutoken ECP 00 00 - название носителя (токена).

Подробная информация про "Имена контейнеров"

Создание локального носителя

Если локального носителя не существует, то его можно создать командой:

sudo /opt/cprocsp/sbin/amd64/cpconfig -hardware reader -add HDIMAGE store

HDIMAGE размещается на /var/opt/cprocsp/keys/<имя пользователя>/


Создание контейнера

Для создания контейнера в носителе HDIMAGE следует воспользоваться командой:

/opt/cprocsp/bin/amd64/csptest -keyset -newkeyset -cont '\\.\HDIMAGE\TestCont'

Для добавления контейнера в носитель токена следует воспользоваться командой:

/opt/cprocsp/bin/amd64/csptest -keyset -newkeyset -cont '\\.\Aktiv Rutoken ECP 00 00\TestCont'

Примечание

Название токена может отличаться. Для идентификации воспользуйтесь командой: csptest -card -enum -v -v

В 5-ой версии КриптоПРО CSP v.5.0, для создания контейнера, имя носителя можно не указывать, а выбрать в интерактивном gtk-диалоге:

/opt/cprocsp/bin/amd64/csptest -keyset -newkeyset -cont 'имя_контейнера'

Для неизвлекаемого контейнера, в GTK-окне следует выбрать "Вид приложения" → "Active token without secure channel" :


Информация о контейнерах

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

/opt/cprocsp/bin/amd64/csptestf -keyset -container 'ИМЯ' -info

 Нажмите здесь для раскрытия...

/opt/cprocsp/bin/amd64/csptestf -keyset -container 'Shuhrat' -info
CSP (Type:80) v5.0.10001 KC1 Release Ver:5.0.11233 OS:Linux CPU:AMD64 FastCode:READY:AVX.

AcquireContext: OK. HCRYPTPROV: 8981043
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC1 CSP
Container name: "Shuhrat"
Signature key is available. HCRYPTKEY: 0x8f3b03
Exchange key is available. HCRYPTKEY: 0x8f9883
Symmetric key is not available.
UEC key is not available.

CSP algorithms info:
  Type:Encrypt    Name:'GOST 28147-89'(14) Long:'GOST 28147-89'(14)
  DefaultLen:256  MinLen:256  MaxLen:256   Prot:0   Algid:00026142

  Type:Hash       Name:'GR 34.11-2012 256'(18) Long:'GOST R 34.11-2012 256'(22)
  DefaultLen:256  MinLen:256  MaxLen:256   Prot:0   Algid:00032801

  Type:Signature  Name:'GR 34.10-2012 256'(18) Long:'GOST R 34.10-2012 256'(22)
  DefaultLen:512  MinLen:512  MaxLen:512   Prot:0   Algid:00011849

  Type:Exchange   Name:'DH 34.10-2012 256'(18) Long:'GOST R 34.10-2012 256 DH'(25)
  DefaultLen:512  MinLen:512  MaxLen:512   Prot:0   Algid:00043590

  Type:Exchange   Name:'DH 34.10-2012 256'(18) Long:'GOST R 34.10-2012 256 DH'(25)
  DefaultLen:512  MinLen:512  MaxLen:512   Prot:0   Algid:00043591

  Type:Hash       Name:'GOST 28147-89 MAC'(18) Long:'GOST 28147-89 MAC'(18)
  DefaultLen:32   MinLen:8    MaxLen:32    Prot:0   Algid:00032799

  Type:Encrypt    Name:'GR 34.12 64 M'(14) Long:'GOST R 34.12-2015 64 Magma'(27)
  DefaultLen:256  MinLen:256  MaxLen:256   Prot:0   Algid:00026160

  Type:Encrypt    Name:'GR 34.12 128 K'(15) Long:'GOST R 34.12-2015 128 Kuznyechik'(33)
  DefaultLen:256  MinLen:256  MaxLen:256   Prot:0   Algid:00026161

  Type:Hash       Name:'GR 34.13 64 M MAC'(18) Long:'GOST R 34.13-2015 64 Magma MAC'(31)
  DefaultLen:64   MinLen:8    MaxLen:64    Prot:0   Algid:00032828

  Type:Hash       Name:'GR 34.13 128 K MAC'(19) Long:'GOST R 34.13-2015 128 Kuznyechik MAC'(37)
  DefaultLen:128  MinLen:8    MaxLen:128   Prot:0   Algid:00032829

  Type:Hash       Name:'GR34.11-12 256 HMAC'(20) Long:'GOST R 34.11-2012 256 HMAC'(27)
  DefaultLen:256  MinLen:256  MaxLen:256   Prot:0   Algid:00032820

Status:
  Provider handles used:        6
  Provider handles max:         1048576
  CPU Usage:                    6 %
  CPU Usage by CSP:             0 %
  Measurement interval:         119 ms

  Virtual memory used:          15281652 KB
  Virtual memory used by CSP:   116572 KB
  Free virtual memory:          26053680 KB
  Total virtual memory:         41335332 KB

  Physical memory used:         14602360 KB
  Physical memory used by CSP:  12576 KB
  Free physical memory:         5857712 KB
  Total physical memory:        20460072 KB

Key pair info:
  HCRYPTKEY:  0x8f3b03
  AlgID:      CALG_GR3410_12_256 = 0x00002e49 (00011849):
    AlgClass: ALG_CLASS_SIGNATURE
    AlgType:  ALG_TYPE_GR3410
    AlgSID:   73
  KP_HASHOID:
    1.2.643.7.1.1.2.2 (ГОСТ Р 34.11-2012 256 бит)
  KP_DHOID:
    1.2.643.2.2.35.1 (ГОСТ Р 34.10 256 бит, параметры по умолчанию)
  KP_SIGNATUREOID:
    1.2.643.2.2.35.1 (ГОСТ Р 34.10 256 бит, параметры по умолчанию)
  Permissions:
    CRYPT_READ
    CRYPT_WRITE
    CRYPT_IMPORT_KEY
    0x800
    0x2000
    0x20000
    0x100000
KP_CERTIFICATE:
  Not set.

Key pair info:
  HCRYPTKEY:  0x8f9883
  AlgID:      CALG_DH_GR3410_12_256_SF = 0x0000aa46 (00043590):
    AlgClass: ALG_CLASS_KEY_EXCHANGE
    AlgType:  ALG_TYPE_DH
    AlgSID:   70
  KP_HASHOID:
    1.2.643.7.1.1.2.2 (ГОСТ Р 34.11-2012 256 бит)
  KP_DHOID:
    1.2.643.2.2.36.0 (ГОСТ Р 34.10 256 бит, параметры обмена по умолчанию)
  KP_SIGNATUREOID:
    1.2.643.2.2.36.0 (ГОСТ Р 34.10 256 бит, параметры обмена по умолчанию)
  Permissions:
    CRYPT_READ
    CRYPT_WRITE
    CRYPT_IMPORT_KEY
    0x800
    0x10000
    0x20000
    0x100000
KP_CERTIFICATE:
Subject: INN=007814508921, E=user@astralinux.ru, C=RU, CN=Махмадиев Шухрат, SN=Махмадиев
Valid  : 18.10.2018 12:07:24 - 18.01.2019 12:17:24 (UTC)
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2

Container version: 2
Carrier flags:
  This reader is removable.
  This reader supports unique carrier names.
  This carrier does not have embedded cryptography.
Keys in container:
  signature key
  exchange key
Extensions (maxLength: 1435):
  ParamLen: 46
  OID: 1.2.643.2.2.37.3.9
  Critical: FALSE
  Size: 19
  Decoded size: 24
  PrivKey: Not specified - 18.01.2020 07:31:07 (UTC)

  ParamLen: 47
  OID: 1.2.643.2.2.37.3.10
  Critical: FALSE
  Size: 19
  Decoded size: 24
  PrivKey: Not specified - 18.01.2020 07:31:12 (UTC)
Total: SYS: 0,020 sec USR: 0,180 sec UTC: 2,180 sec
[ErrorCode: 0x00000000]



Следует учесть про PIN-коды в контейнерах:

* если само устройство осуществляет аутентификацию (как к примеру токен), то PIN при создании не создаётся, а предъявляется, так как он - свойство устройства. Как следствие: у всех контейнеров на токене одинаковый PIN.

* если устройство не аутентифицирует (как HDIMAGE), то при создании контейнера, создаётся PIN-код. Следствие: у всех контейнеров, PIN-код на HDIAMGE может быть разным.

Проверка работы контейнера

Для того чтобы проверить работу контейнера (в том числе возможность выполнения разных операций при текущей лицензии), следует выполнить команду:

/opt/cprocsp/bin/amd64/csptestf -keyset -container ИМЯ -check


 Нажмите здесь для раскрытия...

/opt/cprocsp/bin/amd64/csptestf -keyset -container Shuhrat -check

CSP (Type:80) v5.0.10001 KC1 Release Ver:5.0.11233 OS:Linux CPU:AMD64 FastCode:READY:AVX.


AcquireContext: OK. HCRYPTPROV: 28224051

GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC1 CSP

Container name: "Shuhrat"

Check header passed.

Signature key is available. HCRYPTKEY: 0x1b53883

Exchange key is available. HCRYPTKEY: 0x1b57e23

Symmetric key is not available.

UEC key is not available.

License: Cert without license

Check container passed.

Check sign passed.

Check verify signature on private key passed.

Check verify signature on public key passed.

Check import passed (import restricted).

Check sign passed.

Check verify signature on private key passed.

Check verify signature on public key passed.

Check import passed.

Certificate in container matches AT_KEYEXCHANGE key.

Keys in container:

  signature key

  exchange key

Extensions:

  OID: 1.2.643.2.2.37.3.9

  PrivKey: Not specified - 18.01.2020 07:31:07 (UTC)


  OID: 1.2.643.2.2.37.3.10

  PrivKey: Not specified - 18.01.2020 07:31:12 (UTC)

Total: SYS: 0,030 sec USR: 0,140 sec UTC: 2,430 sec

[ErrorCode: 0x00000000]


Удаление контейнера

Для удаления контейнера следует воспользоваться командой:

/opt/cprocsp/bin/amd64/csptestf -passwd -cont '\\.\Aktiv Rutoken ECP 00 00\TestCont' -deletek

Копирование контейнера

Для примера скопируем контейнер из локального хранилища в хранилище Рутокена ЕЦП:

csptestf -keycopy -contsrc '\\.\HDIMAGE\Контейнер_оригинал' -contdest '\\.\Aktiv Rutoken ECP 00 00\Контейнер_копия'

Запрос на получение сертификата для созданного контейнера

Для создания запроса на получение сертификата для контейнера '\\.\Aktiv Rutoken ECP 00 00\Shuhrat' , воспользуемся командой:

/opt/cprocsp/bin/amd64/cryptcp -creatrqst -dn "E=user@astralinux.ru,C=RU, CN=Махмадиев Шухрат, SN=Махмадиев" -hashalg 1.2.643.7.1.1.2.2 -nokeygen -both -ku -cont '\\.\Aktiv Rutoken ECP 00 00\Shuhrat' cert.req

В параметре -dn указываются данные, которые будут хранится в поле Subject сертификата.

В параметре -hashalg указывается алгоритм хэширования. В случае примера использовался  OID 1.2.643.7.1.1.2.2 - ГОСТ Р 34.11-12 с длиной 256

-nokeygen - использовать существующие ключи из указанного контейнера;


-both* - создать/использовать оба типа ключей;


-ku* - использовать контейнер пользователя (CURRENT_USER);


Более подробная информация про опции утилиты cryptcp: Инструкция_cryptcp.pdf



Созданный запрос будет сохранен в файле cert.req. Эти данные нужны для получения сертификата в удостоверяющем центре.

Для примера можно воспользоваться тестовым  удостоверяющим центром КриптоПро. Нам нужен пункт " Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64 ". На следующей странице в поле «Сохраненный запрос» вставляем содержимое файла cert.req и нажимаем кнопку «Выдать».

Для просмотра содержимого cert.req, воспользуйтесь командой: $ cat  cert.req

После чего следует загрузить сертификат и цепочку сертификатов:

Для установки полученного личного сертификата от тестового УЦ, следует воспользоваться командой:

/opt/cprocsp/bin/amd64/certmgr -inst -file имя_полученного_сертификата.cer -cont '\\.\Aktiv Rutoken ECP 00 00\Shuhrat'


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

/opt/cprocsp/bin/amd64/csptest -keys -cont '\\.\Aktiv Rutoken ECP 00 00\Shuhrat' -keyt exchange -impcert имя_полученного_сертификата.cer


С помощью опции -certusage можно указать OID назначение сертификата

Назначение сертификата представляется в сертификате объектным идентификатором, присвоенным этой политике, - OID. Если в сертификате указано несколько политик, то это означает, что сертификат соответствует всем этим политикам списка.

1.3.6.1.5.5.7.3.1

может использоваться как сертификат серверной аутентификации

1.3.6.1.5.5.7.3.2

может использоваться как сертификат клиентской аутентификации

1.3.6.1.5.5.7.3.3

может использоваться для электронной подписи кода

1.3.6.1.5.5.7.3.4

может использоваться для защиты электронной почты (электронная подпись, шифрование, key agreement)

1.3.6.1.5.5.7.3.8

может использоваться для включения значения хэш-функции при создании штампа времени на документы в Службе штампов времени

1.3.6.1.5.5.7.3.9

может использоваться для формирования электронной подписи OCSP-запросов

* Объектные идентификаторы (OID) определяют отношения, при осуществлении которых электронный документ, подписанный ЭЦП, будет иметь юридическое значение. OID, зарегистрированные в Удостоверяющем центре, включаются состав следующих расширений сертификата ключа подписи: Key Usage (использование ключа), Extended Key Usage (расширенное использование ключа), Application Policy (политики применения сертификата).


Менеджер сертификатов КриптоПРО в Linux


4 категории сертификатов

Они делятся на четыре категории:

* личные сертификаты (ставятся в хранилище umy, где u = User, my - имя хранилища) - как правило для них есть закрытый ключ (и они требуют особой установки, чтобы в хранилище появилась ссылка на этот закрытый ключ). В результате с их использованием можно, например, подписать файл.

* корневые сертификаты - краеугольнй камень безопасности, так как цепочки доверия строятся от них, то их надо добавлять в хранилища осознанно и внимательно (ставятся в uroot, также администратор может поставить их в mroot, где m = Machine, такие сертификаты будут видны в read only в root-хранилищах всех пользователей)

* промежуточные сертификаты - появляются, когда есть промежуточные УЦ (головной -> промежуточный -> пользовательский). Прямое доверие к ним не требуется (ставятся в uca, также администратор может поставить их в mca). В это же хранилище ставятся CRL-и. Обычно точки получения промежуточных сертификатов и CRL-ей правильно указаны в пользовательских сертификатах, поэтому они автоматом выкачиваются и попадают в хранилище ucache. В общем про них можно ничего особо не знать и ничего не делать.

* сертификаты партнёров по общению, чтобы проверять их подписи и зашифровывать для них сообщения. Ставятся либо в umy (это беспорядок, но популярный), либо в uAddressBook

Установка

Пример установки личного сертификата, выданного УЦ Министерства Обороны Российской Федерации

Установка всех личных сертификатов с Рутокена в uMy :
$ sudo /opt/cprocsp/bin/amd64/csptestf -absorb -cert -pattern 'rutoken'

Установка определенного сертификата с определенного контейнера в uMy:
$ /opt/cprocsp/bin/amd64/certmgr -inst -cont '\\.\Aktiv Rutoken ECP 00 00\Ivanov'

Установка сертификата удостоверяющего центра ГУЦ в mRoot:
$ sudo curl https://structure.mil.ru/files/morf/military/files/guc18.cer|/opt/cprocsp/bin/amd64/certmgr -inst -store mRoot

Установка промежуточного сертификата МО в mca: 
$ sudo curl http://structure.mil.ru/download/doc/morf/military/files/CA2018.cer|/opt/cprocsp/bin/amd64/certmgr -inst -store mca -stdin

Установка списка отвызвов (CRL), ставим его с того же сайта в mca:
$ sudo curl http://structure.mil.ru/download/doc/morf/military/files/crl_18.crl|/opt/cprocsp/bin/amd64/certmgr -inst -store mca -stdin -crl

Примечание

В опции -pattern >>>  'rutoken' может быть другим в зависимости от подключенного токена.

В случае, если рабочая станция не имеет доступа к сети, следует stdin заменить на -file /tmp/ca.cer и -file /tmp/ca.crl

Примечание

1) Имена хранилищ указаны в формате  certmgr, у cryptcp похожий формат: -mroot и -uAddressBook

2) Из под учетной записи пользователя ставится в uca, из под учетной записи администратора ставить в mca:

3) В опции -pattern можно указать пустые < ' ' > чтобы установить все сертификаты в uMy. Пример: 

/opt/cprocsp/bin/amd64/csptestf -absorb -cert -pattern ''

4) В случае, если личный сертификат извлечен, следует изпользовать опцию -file :

certmgr -inst -file cert.cer -store uMy

Просмотр

Для просмотра выше установленных сертификатов можно воспользоваться :

certmgr -list



Удаление

Удаление сертификата из хранилища КриптоПро:

certmgr -delete 1 (номер сертификата)

certmgr -del -all (удаление всех сертификатов)

Экспорт сертификатов на другую машину

Закрытые ключи к сертификатам находятся тут: /var/opt/cprocsp/keys.

Поэтому эти ключи переносятся просто: создаем архив и переносим на нужную машину в тот же каталог.


Экспорт сертификата:

/opt/cprocsp/bin/amd64/certmgr -export -dest cert.cer


Переносим эти файлы на машину и смотрим, какие контейнеры есть:

csptest -keyset -enum_cont -verifycontext -fqcn

И как обычно, связываем сертификат и закрытый ключ:

certmgr -inst -file 1.cer -cont '\\.\HDIMAGE\container.name'

Если закрытый ключ и сертификат не подходят друг к другу, будет выведена ошибка:

Can not install certificate
Public keys in certificate and container are not identical

Проверка цепочки сертификатов

Для примера: чтобы проверить цепочку сертификатов, можно скопировать персональный сертификат в файл:

/opt/cprocsp/bin/amd64/cryptcp -copycert -dn CN=Имя_вашего_сертификата -df  /temp/сертификат.cer

CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.

Будет использован следующий сертификат:

Субъект:"АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ 
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Москва, 77 г. 
Москва, RU, шоссе Варшавское д. 26, mail@rusbitech.ru
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02

Цепочка сертификатов не проверена для следующего сертификата:

Субъект:"АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ 
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Пустовой, Виктор Иванович, "АКЦИОНЕРНОЕ 
ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ 
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Генеральный директор, Москва, 77 г. 
Москва, RU, шоссе Варшавское д. 26, 5087746137023, 007726604816, 
13407634844, mail@rusbitech.ru

Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02

Ошибка: Цепочка сертификатов не проверена для следующего сертификата (код ошибки 10000):
/dailybuilds/CSPbuild/CSP/samples/CPCrypt/Certs.cpp:396: 0x20000133
Вы хотите использовать этот сертификат (Да[Y], Нет[N], Отмена[C])? С

Из вывода следует, что у нас отсутствует некий сертификат в цепочке сертификатов. Можно запустить вышеуказанную команду в режиме  debug(отладки):

$ CP_PRINT_CHAIN_DETAIL=1 /opt/cprocsp/bin/amd64/cryptcp -copycert -dn CN=Имя_вашего_сертификата -df  /temp/сертификат.cer
...
----------- Error chain -----------
Chain status:IS_UNTRUSTED_ROOT
Revocation reason:unspecified
1. 
 Subject:'E=uc@mil.ru, OGRN=1037700255284, INN=007704252261, C=RU, S=77 г. Москва, L=Москва, STREET=ул.Знаменка д.19, OU=4 центр (удостоверяющий) войсковой части 31659, O=Министерство обороны Российской Федерации, CN=Министерство обороны Российской Федерации'
 Issuer:'E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва, STREET="улица Тверская, дом 7", O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России'
 Cert status:IS_UNTRUSTED_ROOT
...
CP_PRINT_CHAIN_DETAIL=1 --> включает режим отладки

В нашем примере, из логов можно сделать вывод, что нам надо установить сертификат УЦ МО с CN=Министерство обороны Российской Федерации:

/opt/cprocsp/bin/amd64/certmgr -inst -store uRoot -file minoboron-root-2018.crt

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

....
Subject:'E=uc@mil.ru, OGRN=1037700255284, INN=007704252261, C=RU, S=77 г. Москва, L=Москва, STREET=ул.Знаменка д.19, OU=4 центр (удостоверяющий) войсковой части 31659, O=Министерство обороны Российской Федерации, CN=Министерство обороны Российской Федерации'
 Issuer:'E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва, STREET="улица Тверская, дом 7", O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России'
 Cert status:CERT_TRUST_NO_ERROR
...
Цепочки сертификатов проверены.
Копирование сертификатов завершено.
[ErrorCode: 0x00000000]


Подписание документа ЭЦП


Подпись можно делать двумя способами:

* attached (присоединённая), тогда результирующий файл - это CMS-сообщение, внутрь которого упакованы данные и атрубуты (типа подписи). Формат сообщения соответствует международному стандарту, поэтому извлекать данные оттуда можно любыми утилитами, типа cryptcp / csptest / openssl / certutil (на windows).

* detached (отсоединённая), тогда результирующий файл - это CMS-сообщение БЕЗ исходных данных, но с атрибутами (типа подписи). В этом случае для проверки надо "принести" исходный файл. Разумеется он остаётся неизменным и его можно смотреть cat-ом

Про CMS-сообщения, есть хорошая статья на Хабре


Подпись файлов (присоединённая)

/opt/cprocsp/bin/amd64/cryptcp -sign -dn'CN=Название_нужного_сертификата' -der zayavlenie.pdf
 
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.

Будет использован следующий сертификат:
Субъект:"АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ 
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Москва, 77 г. 
Москва, RU, шоссе Варшавское д. 26, mail@rusbitech.ru

Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02

Цепочки сертификатов проверены.
Папка './':
raport.pdf... Подпись данных...    
    
Подписанное сообщение успешно создано.
[ErrorCode: 0x00000000]




Подпись файлов(отсоединённая)

/opt/cprocsp/bin/amd64/cryptcp -sign -detach -dn 'CN=Название_нужного_сертификата' -pin 12345678 raport.pdf raport.pdf.sig

 CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.

Будет использован следующий сертификат:
Субъект:"АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ 
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Москва, 77 г. 
Москва, RU, шоссе Варшавское д. 26, mail@rusbitech.ru

Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02

Цепочки сертификатов проверены.
Папка './':
raport.pdf... Подпись данных...    
    
Подписанное сообщение успешно создано.
[ErrorCode: 0x00000000]

Проверка подписи в файле

Для прикрепленной подписи

Для проверки прикрепленной подписи выполните:

/opt/cprocsp/bin/amd64/cryptcp -verify raport.pdf.sig  
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.

Найдено сертификатов: 4
Цепочки сертификатов проверены.
Папка './':
raport.pdf.sig ... Проверка подписи... 
    
Автор подписи: "АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ 
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Москва, 77 г. 
Москва, RU, шоссе Варшавское д. 26, mail@rusbitech.ru
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02

 Подпись проверена.
[ErrorCode: 0x00000000]



естественный

использовать ключ -verall - он понимает, что надо найти всех подписавших и ищет в том числе в сообщении:


/opt/cprocsp/bin/amd64/cryptcp -verify -verall -detached /home/shuhrat/smolensk/raport.pdf raport.pdf.sig 
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.
Папка '/home/shuhrat/smolensk/':
/home/shuhrat/smolensk/raport.pdf... Проверка подписи...     
    
Автор подписи: "АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ 
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Москва, 77 г. 
Москва, RU, шоссе Варшавское д. 26, mail@rusbitech.ru
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02

Цепочки сертификатов проверены.
Папка './':
raport.pdf... Проверка подписи... 

 Подпись проверена.
[ErrorCode: 0x00000000]

обучающий

указать в качестве хранилища сертификатов само сообщение (ключ -f):

/opt/cprocsp/bin/amd64/cryptcp -verify -f raport.pdf.sig -detached raport.pdf raport.pdf.sig 
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.

Будет использован следующий сертификат:
Субъект:"АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ 
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Москва, 77 г. 
Москва, RU, шоссе Варшавское д. 26, mail@rusbitech.ru
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02

Цепочки сертификатов проверены.
Папка './':
raport.pdf... Проверка подписи...     
    
Автор
 подписи: "АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ 
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Москва, 77 г. 
Москва, RU, шоссе Варшавское д. 26, mail@rusbitech.ru
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02

 Подпись проверена.
[ErrorCode: 0x00000000]

Извлечение подписанного файла

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

$ cryptcp -verify raport.pdf.sig raport.pdf



Графический интерфейс КриптоПро CSP v. 5.0 (cptools)


В версии КриптоПРО 5 появилась графическая утилита для работы с сертификатами - cptools.

её можно запустить из консоли:

$ cptools

либо

$ /opt/cprocsp/bin/amd64/cptools


Вход в ЕСИА



Для доступа к Госуслугам был использован Рутокен ЭЦП 2, «КриптоПро 4.0 R3», IFCP-plugin 3.0.3

IFCP-plugin позволит Вам авторизоваться и изменять данные на нескольких сайтах:

Список сайтов ЕСИА использующий IFCP-plugin

Установка и настройка


Для аутентификации через ЕСИА esia.gosuslugi.ru следует:

1) Скачать Рутокен плагин с оффициального сайта: https://www.rutoken.ru/support/download/rutoken-plugin/

2) Скачать IFCP-плагин с сайта ГосУслуг в формате «deb» — файл IFCPlugin-x86_64.debhttps://ds-plugin.gosuslugi.ru/plugin/upload/Index.spr

3) Установить плагин:

$ sudo dpkg -i IFCPlugin-x86_64.deb


3) Для правильной работы плагина, следует прописать символические ссылки:

Для браузера Chromium:
sudo ln -s /etc/opt/chrome/native-messaging-hosts/ru.rtlabs.ifcplugin.json /etc/chromium/native-messaging-hosts

Для браузера Mozilla Firefox:

sudo ln -s /opt/cprocsp/lib/amd64/libcppkcs11.so.4.0.4 /usr/lib/mozilla/plugins/lib/libcppkcs11.so

Примечание:  libcppkcs11.so.4.0.Х может отличаться, в зависимости от версии КриптоПро CSP.

4) Добавить в конфигурационный файл IFCplugin /etc/ifc.cfg :

  { name  = "Актив руТокен ЭЦП";
    alias = "ruTokenECP";
    type  = "pkcs11";
	alg   = "gost2001";
    lib_linux = "librtpkcs11ecp.so";
  },

  { name  = "CryptoPro CSP";
    alias = "cryptoprocsp";
    type  = "pkcs11";
    alg = "gost2001";
    lib_linux = "/opt/cprocsp/lib/amd64/libcppkcs11.so";
  }

4б) В КриптоПро CSP для корректной работы pkcs11, настройку слотов следует сделать явной:

Для этого в конфигурационный файл /etc/opt/cprocsp/config64.ini следует в разделе PKCS11 добавить:

# [PKCS11\slot0]
# ProvGOST = "Crypto-Pro GOST R 34.10-2001 KC1 CSP"
# ProvRSA = "Microsoft Strong Cryptographic Provider"
# reader = hdimage


[PKCS11\slot17]
ProvGOST = "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider"
Firefox = 1
Reader = ""



5) Для проверки работы плагина, в терминале в режиме live можно просмотреть логи:

tail -f /var/log/ifc/engine_logs/engine.log



6) Для авторизации следует пройти по адресу: esia.gosuslugi.ru и выбрать Вход с помощью электронной подписи

7) Подключив токен, следует нажать кнопку "Готово", после чего система предложит выбрать нужный сертификат ключа проверки ЭЦП:


Вход на сайт главного портала ГосЗакупок


Успешный вход на сайт zakupki.gov.ru гарантирован, при выполнении всех пунктов инструкции по установке сертификатов, который был описан выше.

Перейдя на сайт zakupki.gov.ru, следует кликнуть мышкой по иконке "Личного кабинета" и выбрать необходимый метод входа:


После чего система уведомит Вас, о том что для работы необходимо установить и настроить ПО "КриптоПро CSP":

Нажав кнопку "Продолжить работу с сайтом", система предложит выбрать нужный сертификат:

Выбрать сертификат и ввести pin-код.



Вход на сайт Минфин России


1) Для авторизации на сайте Минфина России, следует перейти на  страницу авторизации

2) Скачать и установить корнейвой сертификат УЦ "Минфина России:

$ curl http://ssl.budgetplan.minfin.ru/CAMinfin.cer|/opt/cprocsp/bin/amd64/certmgr -inst -store mRoot

3) Кликнуть по ссылке Вход по сертификату и выбрать нужный сертификат:

4) После чего система попросит Вас ввести пароль:


Удаление КриптоПро CSP

Для того, чтобы удалить ПО КриптоПро CSP,  в терминале FLY следует ввести команду:

# apt-get remove lsb-cprocsp-base


Полезные ссылки


Таблица поддерживаемых устройств Крипто-Про CSP

На официальном сайте СКЗИ КриптоПро в таблице указаны носители, продемонстрировавшие работоспособность с соответствующими версиями КриптоПро CSP:

https://www.cryptopro.ru/products/csp/compare

База знаний КриптоПро

https://support.cryptopro.ru/index.php?/Knowledgebase/List

Обсуждение КриптоПро CSP на форуме astralinux:

https://forum.astralinux.ru/threads/419/





  • Нет меток

12 Комментариев

    1. В конфиге можно посмотреть структуру папок в хранилищах

  1. 1КриптоПро CSP
    Необходимо указывать, для какой версии ОС применима статья.
    1. #sb_release -a

      No LSB modules are available.

      Distributor ID: AstraLinuxCE

      Description:    Astra Linux CE 2.12.4 (Orel)

      Release:        2.12.4

      Codename:       orel




    2. Дим, проверял на орле. Был бы признателен, если ктото проверит в Смоленске. Так сказать пробежится свежим взглядом. Токены рутокен и jacarta есть в 409. Можно взять у меня для тестов, если кому нужно.

  2. просьба убрать рекомендацию об установке 32 битной версии:

    "Для ОС AstraLinux следует загрузить пакет:

    КриптоПро CSP 4.0 для Linux (x86, deb) - пакет для 32 разрядной системы;"

  3. Протестированная ночная сборка КриптоПро CSP 5.0 (не релиз) с обходом ошибок ifc-плагина (госуслуг) и правильным модулем поддержки jacarta:
    https://www.cryptopro.ru/sites/default/files/private/csp/50/11294/linux-amd64_deb.tgz
    а также сборки для Эльбруса:
    https://www.cryptopro.ru/sites/default/files/private/csp/50/11294/linux-e2k8c_deb.tgz
    и Байкала:
    https://www.cryptopro.ru/sites/default/files/private/csp/50/11294/linux-mipsel_deb.tgz

  4. Шухрат, переложи пожалуйста на наш nas и приложи ссылки. Не все зарегены на сайте криптопро. Надо только написать что срок тестового ключа 3 месяца. 

    1. про тестовый ключ в примечании написано.

      Сам CSP? или плагины?) Просто в прошлый раз, ты как раз и говорил, что не надо на нас загружать), на случай если ПО обновится.

      А 5 csp у них постоянно обновляется. Русев недавно там библиотеку /opt/cprocsp/lib/amd64/libcppkcs11.so менял, собственно после чего и обновил сам deb пакет на сайте загрузки криптопро.

      1. загружу csp v4r3 (сертифицированную). В ней уже точно ничего не меняется)


  5. я про последнюю сборку. Судя по переписке, она итоговая.