- Установка дополнительных пакетов с модулем поддержки для токена
- Экономим бюджет компании, или как построить ГОСТовский крипто-туннель с минимальными затратами
- Zakupki. gov. ru[править]
- Назначение
- О КриптоПро[править]
- Установка КриптоПро CSP[править]
- Загрузка[править]
- Установка[править]
- Обновление[править]
- Прописывание путей к исполняемым файлам[править]
- Проверка лицензии[править]
- Проверка версии[править]
- Удаление КриптоПро[править]
- КриптоПро ЭЦП Browser plug-in[править]
- Тестовый стенд
- Linux
- Windows
- Особенности работы с токенами[править]
- Rutoken S[править]
- Проверка подписи в файле
- Для прикрепленной подписи
- естественный
- обучающий
- Подписание документа ЭЦП
- Подпись файлов (присоединённая)
- Подпись файлов(отсоединённая)
- Установка КриптоПро CSP
- Полезные ссылки
- КриптоПро CADES ЭЦП Browser plug-in
- Таблица поддерживаемых устройств Крипто-Про CSP
- База знаний КриптоПро
- Обсуждение КриптоПро CSP на форуме astralinux
- Chromium+КриптоПРО
- Список ГИС и ЭТП использующих cades-bes plugin
- Перечень аккредитованных удостоверяющих центров
- Отключение сообщений о необходимости перехода на ГОСТ Р 34. 10-2012
- КриптоПро JCP[править]
- Поддержка Рутокена[править]
- Запуск контрольной панели[править]
- Совместимость[править]
- Электронная подпись[править]
- Создание и проверка подписи в командной строке[править]
- Создание подписи[править]
- Проверка подписи[править]
- Извлечение подписанного файла[править]
- Создание и проверка ЭЦП в ALT CSP КриптоПро[править]
- Создание и проверка ЭЦП в gost-crypto-gui[править]
- Создание и проверка ЭЦП с использованием cptools[править]
- Ссылки[править]
- Вход в ЕСИА[править]
- Настройка оборудования[править]
- Управление считывателями[править]
- Управление носителями[править]
- Управление ДСЧ[править]
- Настройка криптопровайдера[править]
- Управление контейнерами[править]
- Создание контейнера[править]
- Просмотр доступных контейнеров[править]
- Удаление контейнера[править]
Установка дополнительных пакетов с модулем поддержки для токена
Для корректной работы с токеном/смарт-картой обязательно требуется установить:
библиотека libccid, libgost-astra , пакеты pcscd
sudo apt install libccid pcscd libgost-astra
Пакеты с модулем поддержки:
- Для Рутокен: https://www.rutoken.ru/support/download/nix/
- Для Алладин: https://www.aladdin-rd.ru/support/downloads/jacarta
После установки пакетов с модулем поддержки токена следует перезагрузить службу pcscd:
sudo service pcscd restart
Начиная с версии КриптоПро 4.0 R4 и выше, модули поддержки смарт-карт входят в состав пакета.
Экономим бюджет компании, или как построить ГОСТовский крипто-туннель с минимальными затратами
Автор статьи: Роман Вегелин
Содержание1. Введение2. Задача3. В бой a. Linux b. Windows
Для любого системного администратора или DevOps’а построить VPN или пробросить нестандартный метод инкапсуляции пакетов (туннелирование) не очень сложно. Часто для этого используют OpenVPN для постоянного использования, либо ssh-туннелирование на один-два раза. Однако есть организации, которые должны соблюдать строгие рамки передачи данных, установленные законодательством. Под такие организации попадают банки, микрофинансовые организации (да и многие организации, которые так или иначе имеют отношения к финансовым операциям). Защита персональных данных тоже является “защищаемой информацией” во всех законопроектах и положениях.
В результате, опять же по законодательству, при шифровании необходимо использовать СКЗИ со всеми необходимыми ФСТЕКовскими сертификатами и лицензиями, которые удовлетворяют необходимые требования. Одним из таких программных обеспечений является КриптоПро CSP. И в данной статье будем разбирать как “прокинуть” сетевой туннель средствами stunnel, который будет шифроваться КриптоПро CSP, заодно получим хоть и тестовый (на 3 месяца), но полностью валидный по GOST_2012.
Задача
Для начала необходимо разбираться как эта все будет работать и поставить конкретные задачу.
К примеру, есть две машины. Чтобы показать настройку двух операционных систем, одна будет на Linux Ununtu, версия не важна, но желательно не ниже 16), вторая на Windows 10. На win-системе будет запускаться NC на прослушку какого-то определенного порта, а с nix-системы будут передаваться пакеты. Таким образом windows будет сервером. В отношении настроек stunnel такая же ранжировка: Windows — сервер.
Что должно получиться в итоге получить? При подключении с Linux к Windows программой NC, все пакеты будут шифроваться сертификатом GOST_2012, и сертифицированным программным обеспечением. Задача тривиальная, чтобы показать возможность такого маневра. Так, как stunnel передает любой протокол внутри себя, можно, к примеру, подписывать XML-файлы секретной подписью другой организации, или передавать перс. данные в хранилище через интернет.
В бой
#Linux
Начнем с того, что система готова к настройке. Как работает КриптоПро скорее всего все уже знают. Небольшие уточнения по stunnel: этот софт изначально предназначался как прокси с функцией шифрования трафика. Другими словами — он берет, к примеру, http и превращает его в, своего рода, https (если не вдаваться в подробности протоколирования).
Работает stunnel следующим образом — при запуске на локальной машине открывается определенный, указанный в конфигурационном файле порт. И в тот же момент, софт соединяется с stunnel на другой машине. Таким образом, все пакеты, попавшие на порт localhost шифруются, затем проксируются на другую систему и там расшифровываются. Удобство в том, что это просто шлюз, и какой протокол ему шифровать и передавать — не важно.

Рисунок 1. Схема работы stunnel
Изначально скачиваем необходимый КриптоПро отсюда. В скаченном архиве будет примерно такой набор файлов, как на скриншоте.

Рисунок 2. КриптоПро на Linux.
Для установки необходимо запустить install.sh. Этот скрипт поставит нежные компоненты. А именно: certmgr, cpverify, cryptcp, csptest, csptestf, curl ,der2xer, genkpim, inittst, wipefile. У каждой из этих программ своя зона ответственности, свои ключи и задачи… Для задачи нужны будут только certmgr, cryptcp.
Бинарные файлы падают в /opt/cprocsp/bin/ а не в /bin, поэтому запустить их просто командой не получится. Необходимо либо запускать напрямую оттуда, либо сделать символьные ссылки. Только делать ссылку curl не стоит, ибо работает он криво: не видит список удостоверяющих центров из операционной системы, и как следствие, завершает любой запрос с ошибкой и приходится использовать ключ -k который отменяет проверку сертификата на валидность.
Как таковой, stunnel использует openssl для шифрования трафика, но ребята из КриптоПро его переписали под себя, и теперь он “дергает” утилиты для un- и de- шифрования, и называется stunnel-msspi. Поставляется он в архиве, вместе с CSP, либо можно скачать отдельно. У кого старый CSP, есть вероятность, что уже установлен, но это не точно, необходимо проверить.
Как уже выше было сказано, для stunnel линукс система будет клиентом, windows -сервером. IP-адреса будут следующими Linux — 172.22.1.65, Windows — 172.22.1.121
Следующий шаг — ключи и сертификаты. Для сервера нам необходимы сертификат и ключ, причем это все в КриптоПрошном контейнере. Для клиента только сертификат. Сертификат клиенту нужен для того, чтобы кто угодно не мог подключиться к данному туннелю. Забегая немного вперед, в конфигурационном файле stunnel есть такая опция — verify=, и вот ее параметры:
0. Не проверять сертификат сервера
1. Проверять сертификат при его наличии
2. Проверять сертификат всегда
3. Проверять наличие данного сертификата в хранилище TrustedUsers
Начиная с параметра 1 и нужен сертификат клиента для защиты самого подключения.
Итак, для генерации контейнер для сервера необходимо воспользоваться утилитой cryptcp:
cryptcp -creatcert -provtype 81 -dn “C=RU, L=Rostov-na-Donu, CN=srv, 1.2.643.100.5=305867501589415” -exprt -ex -cont “\\\\.\\HDIMAGE\\srv” -ku -certusage “1.3.6.1.5.5.7.3.1” -hashAlg “1.2.643.7.1.1.2.3” -ca http://www.cryptopro.ru/certsrv
Интересные моменты по ключам:· provtype — указывает тип криптопровайдера. Дефолтно подставляется 75. Значение этих цифр можно узнать так: в каталоге /opt/cprocsp/sbin/amd64 лежит программа cpconfig. нужно запустить ее следующими со ключами: ./cpconfig -defprov –view_type.

Рисунок 3. cpconfig
На скриншоте выше видно, что значение 75 устарело, и соответствует ГОСТу 2001. 80 — ГОСТ 2012 256 бит и 81 — ГОСТ 2012 512 бит.
· certusage — идентификатор назначения. Для выполнения задачи необходимы два модуля: проверка подлинности клиента (1.3.6.1.5.5.7.3.2) и проверка подлинности сервера (1.3.6.1.5.5.7.3.1)· hashAlg — алгоритм, который будет применяться. Их можно найти тут· ca — центр сертификации, который подпишет все это добро, чтобы оно было валидно. Сертификаты и ключи валидны ТОЛЬКО в течении 3 месяцев!!! Точнее данный УЦ его выдает на 3 месяца.· cont — контейнер, который будет создан, и в него сохранятся файлы. Если контейнер с таким именем есть — то естественно ничего не отработает.
Выше описаны самые “пикантные” моменты, которые могут отъесть много времени, остальные ключи и непонятные моменты можно найти в мануале. Кстати, проверить можно командой certmgr –list. В выводе отобразится исчерпывающую информацию по контейнерам системы и пользователя.
Переходим к генерации сертификата для клиента. Команда аналогичная, меняется только имя контейнера и идентификатор назначения сертификата.
cryptcp -creatcert -provtype 81 -dn “C=RU, L=Rostov-na-Donu, CN=srv, 1.2.643.100.5=305867501589415” -exprt -ex -cont “\\\\.\\HDIMAGE\\srv” -ku -certusage “1.3.6.1.5.5.7.3.2” -hashAlg “1.2.643.7.1.1.2.3” -ca http://www.cryptopro.ru/certsrv
С ключами и сертификатами все готово. На всякий случай, вот команда экспорта сертификата из контейнера:
certmgr -export -provtype 81 -dest /куда экспортировать сертификат/имя сертификата -cont “\\\\.\\HDIMAGE\\имя контейнера”
Таким образом будет на руках сертификат в der формате.
Следующим шагом надо приниматься за настройку stunnel, а конкретно его конфигурационного файла. Создаем в удобном месте файл stunnel.conf. Содержимое будет следующее:
setuid = rootsetgid = rootpid = /var/opt/cprocsp/tmp/stunnel.pidsocket = l:TCP_NODELAY=1socket = r:TCP_NODELAY=1
debug = 7output = /home/bit/stunnel.log
[TestStunnel]
client = yes
accept = 0.0.0.0:13501
connect = 172.22.1.121:13500
verify = 2
cert = 0xb26305dgbhq47316f4fb80d4877383c4493b3g4d
Секция TestStunnel:Client — указатель, является ли программа сервером или клиентомAccept — порт, который будет открываться на локалхосте, именно к нему будет подключаться программаConnect — ip и порт сервера, к которому будем подключатьсяVerify — об этом разговор уже выше былCert — это как раз клиентский сертификат. Вот в этом пункте необходимо задержаться.
Можно указать этот параметр двумя способами: импортировать сертификат из контейнера, и прописать путь к файлу, или воспользоваться отпечатком сертификата. Достать отпечаток можно все той же командой certmgr –list. Идентификатор указан как SHA1 Hash.

Рисунок 4. Отпечаток в Linux
На этом настройка Linux закончена, можно запускать stunnel с указание конфига stunnel stunnel.conf.
# Windows
После установки CSP необходимо скопировать контейнер с серверным ключом и сертификатом с nix-машины.
Все контейнеры попадают в /var/opt/cprocsp/keys/username, и состоит 6 файлов с расширением .key. Копируем все, но будет небольшая проблема с импортом этого контейнера в CSP. КриптоПро считает, что хранить его на жестком диске не безопасно, и необходим токен. Этот момент можно обойти, создав эмулятор контейнера.
Для этого необходимо скачать и установить ImDisk. Затем, при помощи ImDisk Virtual Disk Driver, создать эмулятор токена (именно так его и увидит CSP, по-русски это просто контейнер HDD), и подключаем его к системе.

Рисунок 5. Псевдотокен
В итоге, рядом с жестким диском, должен появиться еще один носитель — это и есть токен. Туда и надо скопировать папку с контейнером. После этих манипуляций сертификат нормально установится в CSP.
Плюсом ко всему, желательно (обязательно) надо скопировать клиентский сертификат на сервер и тоже его поставить.
Конфигурационный файл для stunnel-msspi:
output= C:\stunnel\stun.logsocket = l:TCP_NODELAY=1socket = r:TCP_NODELAY=1debug = 7
[https]
client = no
accept = 13500
connect = 13501
#cert =E:\srv1.000\srv.cer
cert = 60e26867b649ec6401a42892fa9ab752e51c7e1f
CApath = TrustedPeople
verify=2
Тут все по аналогии с конфигурационным файлом клиента: accept-порт, на который подключается клиентская стуннелина (должен быть разблокирован фаерволом, проброшен во все места до наружного выхода), connect — порт для приложения (в данном случае nc).
В плане сертификата — тут та же история, либо импортим из контейнера, что совсем не рекомендуется, либо указывать отпечаток. Отпечаток можно найти в составе сертификата.

Рисунок 6. Отпечаток в Windows
Лог для дебага можно будет отключить тогда, когда все будет настроено как часы.
Далее необходимо скачать nc для Windows.
Теперь надо запустить сервер stunnel, заодно перезапустить клиента. Для дебага и теста в Windows это лучше делать с командной строки.
На сервере запускается как:nc –nvlp 13501
На клиенте:nc 127.0.0.1 13501
В командной строке сервера побежит лог, который расскажет, что кто-то успешно приконнектился.Пишем в одном окне набор символов, он появляется в другом. Все настроено верно.
Zakupki. gov. ru[править]
Для входа в личный кабинет на http://zakupki.gov.ru необходимо:
1. Браузер с поддержкой ГОСТового TLS: Chromium-gost или firefox-gost.
2. Так как сертификат у этого сайта неправильный, потребуется новая версия КриптоПро (4.0.9963 или новее) и выключение строгой проверки имени сервера (под правами root)[1]:
# /opt/cprocsp/sbin/amd64/cpconfig -ini '\config\parameters' -add long Rfc6125_NotStrict_ServerName_Check 1Проверка под обычным пользователем:
$ /opt/cprocsp/bin/amd64/csptestf -tlsc -server zakupki.gov.ru -nosaveHDEContext expired: OK if file is completely downloaded
Reply status: HTTP/1.1 200 OK
1 connections, 589 bytes in 0.200 seconds;
Total: SYS: 0,020 sec USR: 0,150 sec UTC: 0,250 sec
[ErrorCode: 0x00000000]Назначение
Криптопровайдер КриптоПро CSP предназначен для:
- авторизации и обеспечения юридической значимости электронных документов при обмене ими между пользователями, посредством использования процедур формирования и проверки электронной подписи (ЭП) в соответствии с отечественными стандартами ГОСТ Р 34.10-2001 / ГОСТ Р 34.10-2012 (с использованием ГОСТ Р 34.11-94 / ГОСТ Р 34.11-2012);
- обеспечения конфиденциальности и контроля целостности информации посредством ее шифрования и имитозащиты, в соответствии с ГОСТ 28147-89;
- обеспечения аутентичности, конфиденциальности и имитозащиты соединений по протоколу TLS;
- контроля целостности системного и прикладного программного обеспечения для его защиты от несанкционированных изменений и нарушений правильности функционирования;
- управления ключевыми элементами системы в соответствии с регламентом средств защиты.
https://www.cryptopro.ru/products/csp
В качестве СКЗИ разрешается использовать только КриптоПро CSP следующих версий:
- КриптоПро CSP версии 4.0 R4;
- КриптоПро CSP версии 5.0;
Указанные СКЗИ должны использоваться в исполнениях 1-Base или 2-Base.
СКЗИ КриптоПро CSP в исполнении 2-Base должно использоваться с аппаратно- программным модулем доверенной загрузки (АПМДЗ).
При эксплуатации СКЗИ необходимо соблюдать требования и рекомендации эксплуатационной документации на СКЗИ, в частности требования по защите от несанкционированного доступа и по криптографической защите, а также требования по поддерживаемым СКЗИ аппаратно-программным платформам. В частности, при использовании СЭП со встроенным СКЗИ необходимо проведение проверки программного обеспечения BIOS ЭВМ, на которых предполагается функционирование СКЗИ и СЭП, на соответствие методическим документам ФСБ России в области исследований программного обеспечения BIOS.
Контроль целостности СКЗИ и СЭП должен выполняться с использованием механизма замкнутой программной среды ОС или с использованием стандартных средств контроля целостности КриптоПро CSP.
О КриптоПро[править]
КриптоПро — линейка криптографических утилит (вспомогательных программ), так называемых “криптопровайдеров”. Они используются во многих программах российских разработчиков для генерации ЭЦП, работы с сертификатами, организации структуры PKI и т.д. (см.сайт).
Установка КриптоПро CSP[править]
Загрузка[править]
Архив с программным обеспечением (КриптоПро CSP 4.0 R4 — сертифицированная версия, КриптоПро CSP 5.0 — несертифицированная) можно загрузить после предварительной регистрации:
linux-ia32.tgz (19,3 МБ, для i586) — для 32-разрядных систем (x86, rpm);linux-amd64.tgz (20,1 МБ, для x86_64) — для 64-разрядных систем (x64, rpm).

Внимание! По умолчанию при скачивании с сайта КриптоПро выдаётся лицензия на три месяца
Установка[править]
1. Установите пакет cryptopro-preinstall:
# apt-get install cryptopro-preinstall- Этот пакет установит все требуемое для КриптоПро (включая инфраструктуру поддержки карт Рутокен S и Рутокен ЭЦП).
Примечание: Пакет cryptopro-preinstall вытягивает зависимости libpangox-compat, opensc, pcsc-lite, pcsc-lite-rutokens, pcsc-lite-ccid, newt52.
2. Распакуйте архив, скачанный с официального сайта КриптоПро:
$ tar -xf linux-amd64.tgz
Таблица 1. Описание необходимых пакетов КриптоПро.
| Пакет | Описание |
|---|---|
| Базовые пакеты: | |
| cprocsp-curl | Библиотека libcurl с реализацией шифрования по ГОСТ |
| lsb-cprocsp-base | Основной пакет КриптоПро CSP |
| lsb-cprocsp-capilite | Интерфейс CAPILite и утилиты |
| lsb-cprocsp-kc1 | Провайдер криптографической службы KC1 |
| lsb-cprocsp-kc2 | Провайдер криптографической службы KC2 (требует наличия аппаратного датчика случайных чисел или гаммы) |
| lsb-cprocsp-rdr | Поддержка ридеров и RNG |
| Дополнительные пакеты: | |
| cprocsp-cptools-gtk | Инструменты КриптоПро – кроссплатформенный графический интерфейс |
| cprocsp-rdr-gui-gtk | Графический интерфейс для диалоговых операций |
| cprocsp-rdr-rutoken | Поддержка карт Рутокен |
| cprocsp-rdr-jacarta | Поддержка карт JaCarta |
| cprocsp-rdr-pcsc | Компоненты PC/SC для ридеров КриптоПро CSP |
| lsb-cprocsp-pkcs11 | Поддержка PKCS11 |
| ifd-rutokens | Конфигурация Рутокеновских карт (или можно взять pcsc-lite-rutokens из репозитория) |
3. Установите пакеты КриптоПро:
- под правами пользователя root перейдите в папку с распакованным архивом:
- установите базовые пакеты:
# apt-get install cprocsp-curl* lsb-cprocsp-base* lsb-cprocsp-capilite* lsb-cprocsp-kc1-64* lsb-cprocsp-rdr-64*
Примечание: Для 32-битной версии вместо последнего пакета — lsb-cprocsp-rdr-4*
- установите пакеты для поддержки токенов (Рутокен S и Рутокен ЭЦП):
# apt-get install cprocsp-rdr-gui-gtk* cprocsp-rdr-rutoken* cprocsp-rdr-pcsc* lsb-cprocsp-pkcs11* pcsc-lite-rutokens pcsc-lite-ccid
Примечание: Если возникнут проблемы с отображением контейнеров на Рутокен S — удалите pcsc-lite-openct
- установите пакет для поддержки токенов (JaCarta):
# apt-get install cprocsp-rdr-jacarta*
Примечание: Для установки cprocsp-rdr-jacarta может понадобиться предварительно удалить openct.
- установите пакет для поддержки носителей с неизвлекаемыми ключами:
# apt-get install cprocsp-rdr-cryptoki*
Примечание: Для корректной работы носителей с неизвлекаемыми ключами через интерфейс PKCS#11 был добавлен cprocsp-rdr-cryptoki ( с версии CSP 5.0 R2 12000). Подробнее в базе знаний КриптоПро CSP.
- Для установки сертификатов Главного удостоверяющего центра:
# apt-get install lsb-cprocsp-ca-certs*
- Если есть потребность в установке графических Инструментов КриптоПро:
# apt-get install cprocsp-cptools*
Также можно выполнить установку КриптоПро, запустив ./install_gui.sh в распакованном каталоге и выбрав необходимые модули:

Примечания:
- Для КриптоПро CSP 3.6 R2 потребуется установить пакет
- Для установки может понадобиться libXm.so.3 () и для вывода кириллицы .
- Для установки потребуется предварительно установить .
- В версии 4.0.0-alt5 пакета добавлены подпакеты:
- для установки с , «предоставляющим» (в случае нежелательности «лишних» зависимостей вроде ), и
- для автоустановки зависимостей .
Обновление[править]
Внимание! Пакеты КриптоПро после обновления утрачивают работоспособность, так что рекомендуется удалить все пакеты и установить их заново.
Для обновления КриптоПро необходимо:
- Запомнить текущую конфигурацию:
- набор установленных пакетов:
- настройки провайдера (для простоты можно сохранить ).
- набор установленных пакетов:
- Удалить штатными средствами ОС все пакеты КриптоПро:
# apt-get remove lsb-cprocsp-base
- Установить аналогичные новые пакеты КриптоПро.
- При необходимости внести изменения в настройки (можно просмотреть diff старого и нового ).
- Ключи и сертификаты сохраняются автоматически.
Прописывание путей к исполняемым файлам[править]
Утилиты КриптоПро расположены в директориях /opt/cprocsp/sbin/<название_архитектуры> и /opt/cprocsp/bin/<название_архитектуры>.
Чтобы каждый раз не вводить полный путь к утилитам КриптоПро:
- после установки пакета начните новый сеанс пользователя в консоли;
Примечание: Не работает для суперпользователя.
или
- выполните от имени пользователя, который будет запускать команды (будет действовать до закрытия терминала):
/bin/ls -d /opt/cprocsp/s,bin/*tr
Внимание! Если установлен пакет mono или mono4-devel, может быть конфликт по имени утилиты certmgr
Проверка лицензии[править]
Проверить срок истечения лицензии можно командой (обратите внимание на строки Expires:):
$ cpconfig -license -viewLicense validity:
4040E-G0037-EK8R3-C6K4U-HCXQG
Expires: 2 month(s) 23 day(s)
License type: Server.Примечание: Для версии КриптоПро CSP под Linux все лицензии считаются серверными, поэтому не смущайтесь строкой «License type: Server».
Для установки другой лицензии выполните (под root):
# cpconfig -license -set <серийный_номер>Примечание: Серийный номер следует вводить с соблюдением регистра символов.
Проверка версии[править]
Проверить версию КриптоПро можно командой:
4.0.9963
Удаление КриптоПро[править]
# apt-get remove lsb-cprocsp-baseПримечание: Если появляется
support_mutex_open("registry_lock") failed:: Permission deniedвыполните после удаления
# rm -f /var/opt/cprocsp/tmp/.registry_lockКриптоПро ЭЦП Browser plug-in[править]
Внимание! Последняя доступная версия плагина КриптоПро ЭЦП Browser plug-in 2.0
требует КриптоПро 4.0
. С более ранними версиями КриптоПро плагин не работает и конфликтует.
КриптоПро ЭЦП Browser plug-in предназначен для создания и проверки электронной подписи (ЭП) на веб-страницах с использованием СКЗИ «КриптоПро CSP».
Плагин проверки ЭЦП для браузера требует установленного КриптоПро CSP, пакета cprocsp-rdr-gui-gtk из его комплекта и расширения для браузера CryptoPro Extension for CAdES Browser Plug-in (для работы в Firefox версии 52 и выше).
Для установки плагина:
- Скачайте архив по ссылке http://www.cryptopro.ru/products/cades/plugin/get_2_0 (будет скачан архив под архитектуру браузера) или на странице https://www.cryptopro.ru/products/cades/plugin/ нажмите ссылку «версия 2.0 для пользователей»:
- Распакуйте архив:
$ tar -xf cades_linux_amd64.tar.gz
- Установите пакеты (под правами root, из папки с установочными файлами):
- Разместите ссылки (под правами root):
- Для Chromium:
- Для Firefox (64-битная версия):
# ln -s /opt/cprocsp/lib/amd64/libnpcades.so.2.0.0 /usr/lib64/browser-plugins/libnpcades.so- В актуальных версиях пакетов cprocsp-pki-* эти символические ссылки создаются автоматически в процессе установки.
- Для работы в Firefox версии 52 и выше установите расширение для браузера Инструкция на сайте производителя. Для установки расширения в Mozilla Firefox скачайте его по ссылке https://www.cryptopro.ru/sites/default/files/products/cades/extensions/firefox_cryptopro_extension_latest.xpi или нажмите на ссылку «Скачать расширение для браузера» на странице https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_bes_sample.html

- Во всплывающем окне нажмите кнопку «Разрешить»:

- Нажмите кнопку «Добавить»:

- Появится сообщение, что расширение добавлено в Firefox:

- Убедиться, что плагин установлен можно на странице (или в более ранних версиях Mozilla Firefox). Сделайте его активируемым по умолчанию.
- Для работы в Chromium установите расширение для браузера на странице :
- На странице https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_bes_sample.html вверху должна появится надпись: «Плагин загружен» и должен показаться сертификат в списке:


Внимание! Если список пуст, необходимо проверить правильность цепочки сертификатов
Тестовый стенд
Linux
Начнём с того, что система готова к настройке. Как работает «КриптоПро CSP», читатели, скорее всего, уже знают. Небольшое уточнение относительно stunnel: эта программа изначально создавалась как прокси-сервер с функцией шифрования трафика. Другими словами, она берёт, к примеру, HTTP и превращает его в своего рода HTTPS (если не вдаваться в подробности протоколирования).
Работает stunnel следующим образом: при запуске на локальной машине открывается определённый порт, указанный в конфигурационном файле, и в тот же момент приложение соединяется со своей копией на другой машине. Таким образом все пакеты, попавшие на порт localhost, шифруются, затем проксируются на другую систему и там расшифровываются. Удобство схемы состоит в том, что это — просто шлюз, которому неважно, какой протокол шифровать и передавать.
Рисунок 1. Схема работы stunnel

Изначально загружаем необходимый продукт «КриптоПро» отсюда. В скачанном архиве будет примерно такой набор файлов, как на скриншоте.
Рисунок 2. «КриптоПро CSP» на Linux

Для установки необходимо запустить install.sh. Этот скрипт добавит нужные компоненты: certmgr, cpverify, cryptcp, csptest, csptestf, curl, der2xer, genkpim, inittst, wipefile. У каждой из этих программ — своя зона ответственности, свои ключи и задачи. Для нашего сценария нужны будут только certmgr и cryptcp.
Бинарные файлы попадают в /opt/cprocsp/bin/, а не в /bin, поэтому запустить их просто командой не удастся. Необходимо либо выполнить запуск напрямую оттуда, либо сделать символьные ссылки. Не стоит только создавать ссылку с помощью curl, так как работает он «криво»: не видит список удостоверяющих центров из операционной системы и, как следствие, завершает любой запрос с ошибкой, из-за чего приходится использовать ключ -k, который отменяет проверку сертификата на валидность.
Сама по себе stunnel шифрует трафик с помощью OpenSSL, но в компании «КриптоПро» её переписали под свои нужды, так что теперь она использует утилиты для un- и de- шифрования и называется stunnel-msspi. Поставляется она в архиве вместе с CSP; также её можно скачать отдельно. Для старых версий «КриптоПро CSP» есть вероятность, что программа уже установлена, но это необходимо проверить.
Как было сказано выше, для stunnel Linux-система будет клиентом, а Windows — сервером. IP-адреса: Linux – 172.22.1.65, Windows – 172.22.1.121.
Следующий шаг — ключи и сертификаты. Для сервера нам необходимо и то, и другое, причём все это — в контейнере «КриптоПро». Для клиента требуется только сертификат, нужный для того, чтобы к туннелю не мог подключиться любой желающий. Забегая немного вперёд, отметим, что в конфигурационном файле stunnel есть опция verify, и вот её параметры:
0. Не проверять сертификат сервера
1. Проверять сертификат при его наличии
2. Проверять сертификат всегда
3. Проверять наличие данного сертификата в хранилище TrustedUsers
Начиная с параметра 1, собственно, и нужен сертификат клиента для защиты подключения.
Итак, чтобы сгенерировать контейнер для сервера, необходимо воспользоваться утилитой cryptcp:
cryptcp -creatcert -provtype 81 -dn “C=RU, L=Rostov-na-Donu, CN=srv, 1.2.643.100.5=305867501589415” -exprt -ex -cont “\\\\.\\HDIMAGE\\srv” -ku -certusage “1.3.6.1.5.5.7.3.1” -hashAlg “1.2.643.7.1.1.2.3” -ca http://www.cryptopro.ru/certsrv
Интересные моменты относительно ключей:
- provtype — указывает тип криптопровайдера. По умолчанию подставляется 75. Значение этих цифр можно узнать так: в каталоге /opt/cprocsp/sbin/amd64 лежит программа cpconfig, нужно запустить её с ключами -defprov -view_type.
Рисунок 3. Вывод программы cpconfig

На скриншоте выше видно, что значение 75 устарело и соответствует ГОСТу версии 2001. ГОСТ версии 2012 на 256 и 512 бит задаётся значениями 80 и 81 соответственно.
- certusage — идентификатор назначения. Для выполнения задачи необходимы два модуля: проверка подлинности клиента (1.3.6.1.5.5.7.3.2) и проверка подлинности сервера (1.3.6.1.5.5.7.3.1).
- hashAlg — алгоритм, который будет применяться при шифровании. Список вариантов можно найти здесь.
- ca — центр сертификации, который подпишет всё содержимое, чтобы оно было валидным. Важно, что сертификаты и ключи будут действовать только в течение 3 месяцев (точнее, данный конкретный УЦ, который указан в команде, выдаёт их именно на этот срок).
- cont — контейнер, который будет создан; в нём сохранятся файлы. Если контейнер с таким именем уже есть, то, естественно, команда не отработает. Проверить можно командой certmgr -list; в её выводе отобразится исчерпывающая информация о контейнерах системы и пользователя.
Выше описаны самые «пикантные» моменты, которые могут отнять много времени. Остальные ключи и другие пояснения можно найти в документации.
Переходим к генерации сертификата для клиента. Команда аналогична, меняется только имя контейнера и идентификатор назначения сертификата.
cryptcp -creatcert -provtype 81 -dn “C=RU, L=Rostov-na-Donu, CN=srv, 1.2.643.100.5=305867501589415” -exprt -ex -cont “\\\\.\\HDIMAGE\\srv” -ku -certusage “1.3.6.1.5.5.7.3.2” -hashAlg “1.2.643.7.1.1.2.3” -ca http://www.cryptopro.ru/certsrv
Теперь с ключами и сертификатами всё готово. На всякий случай приведём команду экспорта из контейнера:
certmgr -export -provtype 81 -dest /куда экспортировать сертификат/имя сертификата -cont “\\\\.\\HDIMAGE\\имя контейнера”
Таким образом можно получить «на руки» сертификат в формате DER.
Далее нужно приниматься за настройку stunnel, а именно — его конфигурационного файла. Создаём в удобном месте файл stunnel.conf. Содержимое будет следующим:
setuid = root
setgid = root
pid = /var/opt/cprocsp/tmp/stunnel.pid
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
debug = 7
output = /home/bit/stunnel.log
[TestStunnel]
client = yes
accept = 0.0.0.0:13501
connect = 172.22.1.121:13500
verify = 2
cert = 0xb26305dgbhq47316f4fb80d4877383c4493b3g4d
Прокомментируем содержание секции TestStunnel:
- Client — указатель на то, является ли программа сервером или клиентом;
- Accept — локальный порт, к которому будет подключаться программа;
- Connect — IP-адрес и порт сервера, с которым мы будем соединяться;
- Verify — параметр, который мы уже описывали выше;
- Cert — клиентский сертификат. На этом пункте необходимо задержаться.
Можно указать параметр двумя способами: либо импортировать сертификат из контейнера и прописать путь к файлу, либо воспользоваться отпечатком сертификата. Извлечь отпечаток можно всё той же командой certmgr -list. Идентификатор указан как SHA1 Hash.
Рисунок 4. Отпечаток в Linux

На этом настройка Linux закончена, можно запускать stunnel с указанием соответствующего файла конфигурации stunnel.conf.
Windows
После установки «КриптоПро CSP» необходимо скопировать контейнер с серверным ключом и сертификатом с nix-машины.
Все контейнеры попадают в /var/opt/cprocsp/keys/username и состоят из 6 файлов с расширением .key. Копируем все, хотя здесь будет небольшая проблема с импортом. «КриптоПро CSP» считает, что хранить контейнер на жёстком диске небезопасно, и поэтому необходим токен. Указанное препятствие можно обойти создав эмулятор контейнера.
Для этого необходимо скачать и установить ImDisk. Затем при помощи ImDisk Virtual Disk Driver следует создать эмулятор токена (именно так его и увидит CSP, по-русски это — просто контейнер HDD) и подключить его к системе.
Рисунок 5. Псевдотокен

В итоге рядом с жёстким диском должен появиться ещё один носитель — это и есть токен. Туда понадобится скопировать папку с контейнером. После этих манипуляций сертификат нормально установится в «КриптоПро CSP».
Дополнительно стоит скопировать клиентский сертификат на сервер и тоже его установить.
Конфигурационный файл для stunnel-msspi:
output= C:\stunnel\stun.log
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
debug = 7
[https]
client = no
accept = 13500
connect = 13501
#cert =E:\srv1.000\srv.cer
cert = 60e26867b649ec6401a42892fa9ab752e51c7e1f
CApath = TrustedPeople
verify=2
Здесь всё устроено по аналогии с конфигурационным файлом клиента: accept — порт, к которому подключается клиентская копия stunnel (должен быть разблокирован в брандмауэре и «проброшен» во все места до наружного выхода), connect — порт для приложения (в данном случае — Netcat).
Повторяется история и в отношении сертификата: либо импорт из контейнера, что совсем не рекомендуется, либо указание отпечатка. Отпечаток можно найти в составе сертификата.
Рисунок 6. Отпечаток сертификата в Windows

Журнал для отладки можно будет отключить тогда, когда всё будет настроено как часы.
Теперь пора скачать Netcat для Windows.
Следующий шаг — запустить сервер stunnel, заодно перезапустив и клиент. Для отладки и тестирования в Windows лучше делать это из командной строки.
На сервере:
nc -nvlp 13501
На клиенте:
nc 127.0.0.1 13501
В командной строке сервера побежит протокол, который расскажет, что кто-то успешно подключился. Пишем в одном окне набор символов; он появляется в другом окне. Всё настроено верно.
Рисунок 7. Результат

Особенности работы с токенами[править]
Rutoken S[править]
При входе в ЕСИА с помощью Rutoken S не находится приватная часть ключа. В журнале ifc появляется строка:
IFC:do_work_sign_cms:ERROR:get_priv_key_by_id error:ifc_sign_cms.c:110
Для этого надо перенести приватный ключ в локальное хранилище и задействовать его:
$ csptest -keycopy -contsrc 'имя_контейнера_например\\.\Aktiv Rutoken ECP 00 00\ххххх' -contdest '\\.\HDIMAGE\private' -pindest пароль$ certmgr -inst -cont '\\.\HDIMAGE\private'
для AltLinux9.2 КриптоПро5 Rutoken S – если cptools не читает ключ.
Bus 001 Device 005: ID 0a89:0020 Retoken SДобавить группу, если в журнале ошибки по отсутствию групп
$ groupadd scard$ groupadd pcscd
В
добавить в файл
$ vi 50-pcscd-asedriveiiie.rulesстроку
И закоментировать в файле
строку
После внесения изменений перезагрузить службу
Проверка подписи в файле
Для прикрепленной подписи
Для проверки прикрепленной подписи выполните:
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, указывающий, что надо найти всех подписавших, в том числе в сообщении:
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):
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]
Подписание документа ЭЦП
Подпись можно делать двумя способами:
* attached (присоединённая), тогда результирующий файл – это CMS-сообщение, внутрь которого упакованы данные и атрибуты (типа подписи). Формат сообщения соответствует международному стандарту, поэтому извлекать данные оттуда можно любыми утилитами, типа cryptcp / csptest / openssl / certutil (на windows).
* detached (отсоединённая), тогда результирующий файл – это CMS-сообщение БЕЗ исходных данных, но с атрибутами (типа подписи). В этом случае для проверки надо “принести” исходный файл. Разумеется он остаётся неизменным и его можно смотреть cat-ом
Про CMS-сообщения, есть хорошая статья на Хабре
Подпись файлов (присоединённая)
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]
Подпись файлов(отсоединённая)
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]
Установка КриптоПро CSP
Архив с программным обеспечением (КриптоПро CSP) можно загрузить c официального сайта www.cryptopro.ru, предварительно зарегистрировавшись на сайте.
Для ОС Astra Linux следует загрузить пакет КриптоПро CSP 4 и выше версии – пакет для 64 разрядной системы.
Пробный период использования КриптоПро CSP составляет 3 месяца, по истечении которых необходимо приобрести полноценную лицензию.
Для написания настоящей статьи была использована сертифицированная версия ПО «КриптоПро» «4.0 R4». При этом был выполнен следующий алгоритм действий:
1) загрузить архив с сертифицированной версией ПО «КриптоПро». Название полученного файла: «linux-amd64_deb.tgz»;
2) открыть “Терминал Fly” (alt+T);
3) разархивировать полученный архив в терминале командой:
tar -zxf linux-amd64_deb.tgz
5) перейти в каталог с ПО:
6) выполнить установку ПО с помощью запуска сценария “install.sh” или “instal_gui.sh” командой:
Работа с КриптоПро CSP > image2021-9-8_15-49-44.png” data-location=”Справочный центр > Работа с КриптоПро CSP > image2021-9-8_15-49-44.png” data-image-height=”393″ data-image-width=”776″>
* Выбрать необходимые модули, библиотеки.
Полезные ссылки
КриптоПро CADES ЭЦП Browser plug-in
КриптоПро CADES ЭЦП Browser plug-in
Таблица поддерживаемых устройств Крипто-Про 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/
Chromium+КриптоПРО
https://www.cryptopro.ru/news/2018/12/zashchishchennyi-brauzer-dlya-gosudarstvennykh-elektronnykh-ploshchadok-teper-i-na-linu
https://astralinux.ru/news/category-news/2018/brauzeryi-%C2%ABastra-linux-special-edition%C2%BB-adaptirovanyi-dlya-rabotyi/
Список ГИС и ЭТП использующих cades-bes plugin
ЭЦП в государственных информационных системах и электронно торговых площадках
Перечень аккредитованных удостоверяющих центров
https://e-trust.gosuslugi.ru/CA/
Отключение сообщений о необходимости перехода на ГОСТ Р 34. 10-2012
В соответствии с принятым в 2014 году порядком перехода на ГОСТ Р 34.10-2012 до 1 января 2019 года попытка использования ГОСТ Р 34.10-2001 (кроме проверки подписи) на всех выпущенных к настоящему моменту сертифицированных версиях КриптоПро CSP 3.9, 4.0 и КриптоПро JCP 2.0 с 1 января 2019 года вызовет ошибку/предупреждение (в зависимости от продукта и режима работы), которые могут привести к неработоспособности автоматических/автоматизированных систем при использовании ими ключей ГОСТ Р 34.10-2001. В случае если ваша система использует ключи ГОСТ Р 34.10-2001, просим принять во внимание инструкцию.
Для отключения данных предупреждений в КриптоПро CSP, нужно добавить два ключа в конфигурационный файл /etc/opt/cprocsp/config64.ini в существующую секцию Parameters:
[Parameters] #Параметрыпровайдера warning_time_gen_2001=ll:9223372036854775807 warning_time_sign_2001=ll:9223372036854775807
На данный момент завершается сертификация обновленной версии КриптоПро CSP 4.0 R4. Для наиболее безболезненного продолжения работы с ГОСТ Р 34.10-2001 в 2019 году мы рекомендуем обновиться до этой версии. В более ранних версиях КриптоПро CSP, а также Клиент HSM 2.0 присутствуют технические ограничения формирования подписи по ГОСТ Р 34.10-2001 после 1 января 2019 года в виде соответствующих предупреждающих окон.
КриптоПро JCP[править]
- Для установки КриптоПро JCP нужно установить Oracle Java 1.7.0 (через собственную сборку или пакеты для Fedora)
- Распакуйте архив и перейдите в каталог
- Выполните
# ./install.sh /usr/java/jre1.7.0_51 XXXXX-XXXXX-XXXXX-XXXXX-XXXXX "Your Company"Поддержка Рутокена[править]
- Загрузите драйвер для JCP http://www.rutoken.ru/support/download/rutoken-for-cp/ и распакуйте его
- Выполните:
# java -jar rtjlib.jar -install -rutokenЗапуск контрольной панели[править]
(требует графического дисплея)
Совместимость[править]
По информации разработчика, с ALT Linux совместимы следующие продукты КриптоПро:
- КриптоПро CSP
- КриптоПро JCP
- КриптоПро HSM
- КриптоПро TSP
- КриптоПро OCSP
- КриптоПро ЭЦП Browser plug-in
- КриптоПро SSF
- КриптоПро Stunnel
- Браузер КриптоПро Fox
Примечание: В репозитории доступен пакет firefox-gost, аналогичный КриптоПро Fox, с патчем от КриптоПро.
Электронная подпись[править]
Существуют два вида электронной подписи:
- прикреплённая (attached) — в результирующий файл упакованы данные исходного файла и подпись;
- откреплённая (detached) — подписываемый документ остается неизменным, подпись же сохраняется в отдельном файле. Для проверки отсоединенной подписи нужны оба файла, файл подписи и файл исходного документа.
Создание и проверка подписи в командной строке[править]
Создание подписи[править]
Для создания электронной подписи файла необходимо указать сертификат и имя подписываемого файла.
Для создания прикрепленной (attached) электронной подписи выполните команду:
Примечание: Проще всего для указания сертификата использовать адрес e-mail.
CryptCP 4.0 (c) "КРИПТО-ПРО", 2002-2018. Утилита командной строки для подписи и шифрования файлов. Будет использован следующий сертификат: Субъект:user@test.ru, Иванов Иван Действителен с 18.12.2018 13:41:38 по 18.03.2019 13:51:38 Цепочки сертификатов проверены. Папка './': zayavlenie.pdf... Подпись данных... Подписанное сообщение успешно создано. [ErrorCode: 0x00000000]
где
- -dn E=user@test.ru — сертификат по e-mail;
- -der — использовать формат DER для файла подписи (по умолчанию используется формат Base64);
- zayavlenie.pdf — имя подписываемого файла.
На выходе появится файл zayavlenie.pdf.sig, содержащий как сам подписываемый файл, так и электронную подпись.
Для создания открепленной (detached) подписи необходимо заменить ключ -sign на -signf:
Тогда рядом с оригинальным файлом будет лежать файл подписи — zayavlenie.pdf.sgn.
Проверка подписи[править]
Для проверки прикреплённой подписи выполните команду:
$ cryptcp -verify zayavlenie.pdf.sigCryptCP 4.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.
Будет использован следующий сертификат:
Субъект:user@test.ru, Иванов Иван
Действителен с 18.12.2018 13:41:38 по 18.03.2019 13:51:38
Цепочки сертификатов проверены.
Папка './':
zayavlenie.pdf.sig... Проверка подписи...
Автор подписи: user@test.ru, Иванов Иван Подпись проверена.
[ErrorCode: 0x00000000]Показано, кто подписывал и что подпись проверена.
Для проверки откреплённой подписи выполните команду:
$ cryptcp -vsignf zayavlenie.pdfCryptCP 4.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.
Будет использован следующий сертификат:
Субъект:user@test.ru, Иванов Иван
Действителен с 18.12.2018 13:41:38 по 18.03.2019 13:51:38
Цепочки сертификатов проверены.
Папка './':
234.pdf... Проверка подписи...
Автор подписи: user@test.ru, Иванов Иван Подпись проверена.
[ErrorCode: 0x00000000]Также для проверки электронной подписи можно воспользоваться сервисом на сайте Госуслуг — https://www.gosuslugi.ru/pgu/eds.
Извлечение подписанного файла[править]
Для извлечения файла с данными из файла электронной подписи необходимо указать имя файла, в который будут извлечены данные, в конце команды проверки подписи:
$ cryptcp -verify zayavlenie.pdf.sig zayavlenie.pdfСоздание и проверка ЭЦП в ALT CSP КриптоПро[править]
Создание и проверка ЭЦП в gost-crypto-gui[править]
gost-crypto-gui — средство для создания электронной подписи и шифрования файлов.
Установить пакет gost-crypto-gui из репозитория можно, выполнив команду:
# apt-get install gost-crypto-guiЗапустить программу можно:
- из командной строки:
$ python /usr/bin/gost-crypto-gui.py
- в рабочей среде Mate: ▷ ▷ Подпись и шифрование файлов;
- в рабочей среде KDE: Меню запуска приложений ▷ ▷ Подпись и шифрование файлов.
С её помощью можно подписывать и проверять подписи файлов:

Для создания электронной подписи файла необходимо:
- Нажать кнопку «Подписать файл(ы)».
- Выбрать файл, который необходимо подписать.
- Выбрать сертификат и нажать кнопку «Далее»:
- Ввести пароль на контейнер (если он был установлен):
- Появится сообщение о подписанном файле:
Опции ЭП настраиваются в меню «Опции» (параметр «Отсоединенная подпись» не работает???):

Для проверки электронной подписи следует:
- Нажать кнопку «Проверить подпись».
- Выбрать подписанный файл.
- Появится информация о сертификате подписи:
Создание и проверка ЭЦП с использованием cptools[править]
Примечание: cptools доступна версии КриптоПро 5.
Запустить программу можно из консоли (должен быть установлен cprocsp-cptools-gtk из скачанного архива КриптоПро):
С помощью cptools можно подписывать и проверять подписи файлов.
Для создания электронной подписи файла необходимо:
- В левом меню выбрать пункт «Создание подписи».
- Выбрать файл, который необходимо подписать, нажав кнопку «Выбрать файл для подписи» (или ввести адрес файла в текстовое поле под кнопкой «Выбрать файл для подписи»).
- Изменить имя файла подписи, если оно вас не устраивает:
- Нажать кнопку «Подписать».
- Ввести пароль на контейнер (если он был установлен).
- Появится сообщение о подписанном файле: «Создание подписи завершилось успехом».
Для проверки электронной подписи следует:
- В левом меню выбрать пункт «Проверка подписи».
- Выбрать файл с подписью, нажав кнопку «Выбрать файл с подписью для проверки» (или ввести адрес файла в текстовое поле под этой кнопкой).
- Нажать кнопку «Проверить подпись».
- Появится информация о результате проверки:
Ссылки[править]
- ЖТЯИ.00050-03 90 02-02. СКЗИ «КриптоПро CSP». Руководство администратора безопасности. Использование СКЗИ под управлением ОС Linux (из электронной документации по КриптоПро; доступно для скачивания с демонстрационной версией)
- ЖТЯИ.00050-03 90 07. КриптоПро CSP. Приложение командной строки
- Инструкция по настройке IFCPlugin (сайт госуслуг) для работы с КриптоПро
- ЭЦП
- Набор скриптов для подписания и проверки ЭЦП КриптоПро на Linux
Вход в ЕСИА[править]
Для аутентификации через ЕСИА (https://esia.gosuslugi.ru/) потребуется установить версию не позже CSP 4.0R3 и плагин IFCPlugin, а также установить расширение для плагина Госуслуг, в зависимости от версии браузера:
- Расширение для Google Chrome/Chromium/Chromium GOST
- Расширение для Mozilla Firefox
Перезапустить браузер.
Подробнее:
- Вход в ЕСИА
- Вход с помощью электронной подписи на портал Госуслуг на Linux (от КриптоПро)
Примечание: Для старых версий плагина (< 3.0.0) необходимо добавить в файл /etc/ifc.cfg после раздела с Jacarta (для 64-битных систем):
{ name = "CryptoPro CSP"; alias = "cryptoprocsp"; type = "pkcs11"; lib_linux = "/opt/cprocsp/lib/amd64/libcppkcs11.so"; },Примечание: Для работы с контейнерами КриптоПро (в том числе с ГОСТ-2012) для плагина 3.0.5 необходимо добавить в файл /etc/ifc.cfg (для 64-битных систем):
{ name = "CryptoPro CSP5"; alias = "cprocsp5"; type = "pkcs11"; alg = "gost2001"; model = "CPPKCS 3"; lib_linux = "/opt/cprocsp/lib/amd64/libcppkcs11.so"; }, { name = "CryptoPro CSP5 2012 256"; alias = "cprocsp5_2012_256"; type = "pkcs11"; alg = "gost2012_256"; model = "CPPKCS 3"; lib_linux = "/opt/cprocsp/lib/amd64/libcppkcs11.so"; }, { name = "CryptoPro CSP5 2012 512"; alias = "cprocsp5_2012_512"; type = "pkcs11"; alg = "gost2012_512"; model = "CPPKCS 3"; lib_linux = "/opt/cprocsp/lib/amd64/libcppkcs11.so"; }И сделать символическую ссылку на библиотеку pkcs11:
# ln -s /opt/cprocsp/lib/amd64/libcppkcs11.so.4.0.4 /usr/lib/mozilla/plugins/lib/libcppkcs11.soЖурнал работы плагина можно найти в файле /var/log/ifc/engine_logs/engine.log.
Настройка оборудования[править]
Настройка устройств хранения (носителей) и считывания (считывателей) ключевой информации и датчиков случайных чисел.
Считыватели (readers) — устройства, предназначенные для чтения ключей. К считывателям относится считыватели дискет (FAT12), считыватели флеш-накопителей (FLASH), считыватели смарт-карт и токенов, считыватель образа дискеты на жестком диске (HDIMAGE) и др.
Ключевые носители (media) являются местом хранения электронной подписи. В качестве носителя ключевой информации могут использоваться: защищенный флэш-накопитель (токен) (Рутокен, JaCarta, ESMART и др.), смарт-карта, флэш-накопитель, дискета.
Ключевые контейнеры — это способ хранения закрытых ключей, реализованный в КриптоПро. Их физическое представление зависит от типа ключевого носителя (на флеш-накопителе, дискете, жестком диске это каталог в котором хранится набор файлов с ключевой информацией; в случае со смарт-картами — файлы в защищенной памяти смарт-карты).
Встроенный в «КриптоПро CSP» датчик случайных чисел (далее ДСЧ) используется для генерации ключей.
Для смарт-карт: ключи дополнительно защищаются кодом доступа к защищенной памяти смарт-карты (PIN). При всех операциях с защищенной памятью (чтение, запись, удаление…) требуется вводить PIN.
Для других носителей: для повышения безопасности на контейнер можно установить пароль. В этом случае всё содержимое контейнера хранится не в открытом виде, а в зашифрованном на этом пароле. Пароль задается при создании контейнера, в дальнейшем для чтения ключей из контейнера необходимо будет вводить пароль.
Примечание: Подробнее про работе с разными ключевыми носителями: Рутокен, JaCarta, ESMART
Управление считывателями[править]
Просмотр доступных (настроенных) считывателей:
$ cpconfig -hardware reader -viewNick name: Aladdin R.D. JaCarta [SCR Interface] 00 00
Connect name:
Reader name:
Nick name: FLASH
Connect name:
Reader name:
Nick name: HDIMAGE
Connect name:
Reader name:Либо:
CSP (Type:80) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX. CryptAcquireContext succeeded.HCRYPTPROV: 6679203 GetProvParam(...PP_ENUMREADERS...) until it returns false Len Byte NickName/Name _____________________________ 0x012a 0x72 ACS ACR38U-CCID 00 00 All PC/SC readers 0x012a 0x72 Aktiv Co. Rutoken S 00 00 All PC/SC readers 0x012a 0x58 FLASH FLASH 0x012a 0x18 HDIMAGE Структура дискеты на жестком диске Cycle exit when getting data. 4 items found. Level completed without problems. Total: SYS: 0,000 sec USR: 0,170 sec UTC: 0,190 sec [ErrorCode: 0x00000000]
Инициализация считывателя HDIMAGE, если его нет в списке доступных считывателей (под правами root):
# cpconfig -hardware reader -add HDIMAGE storeAdding new reader:
Nick name: HDIMAGE
Succeeded, code:0x0Считыватель HDIMAGE размещается на /var/opt/cprocsp/keys/<имя пользователя>/.
Для работы со считывателем PC/SC требуется пакет cprocsp-rdr-pcsc. После подключения считывателя можно просмотреть список видимых считывателей (не зависимо от того, настроены ли они в КриптоПро как считыватели, зависит только от того, какие установлены драйверы для считывателей):
Aladdin R.D. JaCarta [SCR Interface] 00 00 Aktiv Co. Rutoken S 00 00
Инициализация считывателя Aktiv Co. Rutoken S 00 00 (требуется, если считыватель есть в списке видимых считывателей и отсутствует в списке настроенных), в параметре -add указывается имя, которое было получено при просмотре видимых считывателей, в параметре -name — удобное для обращения к считывателю имя, например, Rutoken (под правами root):
# cpconfig -hardware reader -add 'Aktiv Co. Rutoken S 00 00' -name 'Rutoken'Adding new reader:
Nick name: Aktiv Co. Rutoken S 00 00
Name device: Rutoken
Succeeded, code:0x0Современные аппаратные и программно-аппаратные хранилища ключей, такие как Рутокен ЭЦП или eSmart ГОСТ, поддерживаются через интерфейс PCSC. За реализацию этого интерфейса отвечает служба pcscd, которую необходимо запустить перед началом работы с соответствующими устройствами:
Можно включить службу pcscd в автозапуск при загрузке системы:
Управление носителями[править]
Просмотр доступных носителей:
Управление ДСЧ[править]
Просмотр списка настроенных ДСЧ:
$ cpconfig -hardware rndm -viewNick name: CPSD
Connect name:
Rndm name:
Rndm level: 3
Nick name: BIO_GUI
Connect name:
Rndm name:
Rndm level: 4
Nick name: BIO_TUI
Connect name:
Rndm name:
Rndm level: 5Настройка криптопровайдера[править]
Просмотреть доступные типы криптопровайдеров можно командой cpconfig -defprov -view_type:
$ cpconfig -defprov -view_typeProvider type Provider Type Name
_____________ _____________________________________ 75 GOST R 34.10-2001 Signature with Diffie-Hellman Key Exchange 80 GOST R 34.10-2012 (256) Signature with Diffie-Hellman Key Exchange 81 GOST R 34.10-2012 (512) Signature with Diffie-Hellman Key Exchange 16 ECDSA Full and AES 24 RSA Full and AESПросмотр свойств криптопровайдера нужного типа:
$ cpconfig -defprov -view -provtype 80Listing Available Providers:
Provider type Provider Name
_____________ _____________________________________ 80 Crypto-Pro GOST R 34.10-2012 KC1 CSP 80 Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider
Provider types and provider names have been listed.Управление контейнерами[править]
Создание контейнера[править]
Примечание: Для того, чтобы сертификат из контейнера можно было использовать через модуль pkcs11 (из пакета lsb-cprocsp-pkcs11) в браузере firefox-gost, необходимо создать его с -provtype 75 (поддержка ГОСТ-2001).
Внимание! C 1 января 2019 г. по указанию ФСБ РФ и Минкомсвязи всем аккредитованным УЦ запрещен выпуск сертификатов ЭП по ГОСТ 2001.
Ключи и запрос на сертификат необходимо формировать ГОСТ 2012.
Создадим контейнер с именем «test» в локальном считывателе HDIMAGE.
$ csptest -keyset -provtype 75 -newkeyset -cont '\\.\HDIMAGE\test'При установленном пакете cprocsp-rdr-gui-gtk будет показано графическое окно, где будет предложено перемещать указатель мыши или нажимать клавиши:

Примечание: Если такой пакет не установлен, будет предложено ввести любые символы с клавиатуры.
После этого будет предложено указать пароль на контейнер (можно указать пустой, тогда пароль запрашиваться не будет):

Внимание! При создании контейнера на токене:
Пароль не создается, а предъявляется (PIN-код пользователя):

После указания пароля снова будет предложено перемещать указатель мыши.
Вывод команды:
CSP (Type:75) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX. AcquireContext: OK. HCRYPTPROV: 6679219 GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2001 KC1 CSP Container name: "test" Signature key is not available. Attempting to create a signature key... a signature key created. Exchange key is not available. Attempting to create an exchange key... an exchange key created. Keys in container: signature key exchange key Extensions: OID: 1.2.643.2.2.37.3.9 OID: 1.2.643.2.2.37.3.10 Total: SYS: 0,030 sec USR: 0,160 sec UTC: 22,910 sec [ErrorCode: 0x00000000]
Локальный контейнер создан.
В КриптоПро 5 появилась возможность интерактивно выбирать носитель и тип создаваемого контейнера. Теперь можно создавать неизвлекаемые контейнеры.
Для этого необходимо выполнить команду, где testinside_2012 — имя контейнера:
$ csptest -keyset -provtype 80 -newkeyset -cont testinside_2012Откроется окно выбора носителя и способа создания контейнера. Для некоторых носителей нет возможности выбрать способ создания контейнера (Рутокен S, JaCarta PKI):

Для некоторых носителей можно выбрать способ создания контейнера (Рутокен ЭЦП, JaCarta-2 PKI/ГОСТ).
Создание неизвлекаемого контейнера:
Создание обычного контейнера:
Просмотр доступных контейнеров[править]
Внимание! При подключении токена в порт USB3, контейнеры видны не будут.
Примечание: Вы можете загрузить все сертификаты с подключенных токенов командой:
csptestf -absorb -certs -autoprov
Проверить наличие контейнеров можно с помощью команды:
CSP (Type:80) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX. AcquireContext: OK. HCRYPTPROV: 6679203 \\.\HDIMAGE\test OK. Total: SYS: 0,000 sec USR: 0,070 sec UTC: 0,130 sec [ErrorCode: 0x00000000]
Внимание! Имена контейнеров могут содержать названия в кодировке cp1251 (например, на токенах), что делает работу с ними по этим именам проблематичной. Можно показать список контейнеров с их уникальными именами командой:
$ csptest -keyset -enum_cont -fqcn -verifyc -uniqCSP (Type:80) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 6679203
\\.\Aktiv Co. Rutoken S 00 00\card |\\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2b8654f7\0A00\6AD1
\\.\HDIMAGE\test |\\.\HDIMAGE\HDIMAGE\\test.000\2EF8
OK.
Total: SYS: 0,020 sec USR: 0,190 sec UTC: 1,510 sec
[ErrorCode: 0x00000000]Уникальные имена указаны после символа «|».
Просмотр подробной информации о контейнере:
csptestf -keyset -container '\\.\HDIMAGE\test' -infoУдаление контейнера[править]
Удалить контейнер можно с помощью команды:
$ csptest -keyset -deletekeyset -cont '\\.\HDIMAGE\test'CSP (Type:80) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX.
Container \\.\HDIMAGE\test deleted.
Total: SYS: 0,010 sec USR: 0,240 sec UTC: 0,260 sec
[ErrorCode: 0x00000000]











