КриптоПро — линейка криптографических утилит для генерации ЭЦП, работы с сертификатами, организации структуры PKI. Незаменимый продукт для работы в ЕИС (zakupki.gov.ru), Официальный сайт ГМУ (bus.gov.ru), Электронный бюджет (budget.gov.ru), Портал государственных услуг РФ + Единая система идентификации и аутентификации ЕСИА (esia.gosuslugi.ru), Федеральная налоговая служба (lkfl.nalog.ru) и т.д. Авторизация в личных кабинетах ГИС-ов возможна только по ГОСТ-у. Для этого можно использовать браузер Chromium с поддержкой ГОСТ - скачать для x86_64 (репозиторий на github.com)
chromium-gost — веб-браузер с открытым исходным кодом на основе Chromium с поддержкой криптографических алгоритмов ГОСТ при установке защищённых соединений через интерфейс msspi
Для работы криптографических алгоритмов ГОСТ у вас должен быть установлен КриптоПро CSP (или другой криптопровайдер поддерживающий работу алгоритмов ГОСТ в интерфейсе SSPI)
Скрипт автоматизированной сборки xzm модулей KC1 и KC2 КриптоПро CSP для PorteusЗаметка. Все команды описанные в данной статье выполняем под root пользователем.
Для авторизации в качестве root пользователя выполните в терминале:Code: Select all
su toor
Code: Select all
#!/bin/bash
# Copyright 2017-2025 Blaze, Russian Federation, Lipetsk region, Dankov
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
# This is script for the automated building KC1 and KC2 xzm modules from rpm packages
# of CryptoPro CSP for Porteus i686 and x86_64.
#
#
# Date: 11.09.2017 20:58:47 (UTC+3)
#
#
# Скрипт для автоматизированной сборки KC1 и KC2 xzm модулей КриптоПро CSP для Porteus
# Вручную в браузере скачиваем архив с сайта КриптоПро CSP с rpm пакетами
# linux-ia32.tgz или linux-amd64.tgz, в зависимости от архитектуры ПК
# ссылка на загрузку https://www.cryptopro.ru/products/csp/downloads
# скопируйте данный архив в /tmp
if [ `whoami` != "root" ]; then
echo 'Этот скрипт должен быть запущен с правами root'
exit 1
fi
cd /tmp
# сборка для архитектуры i586
if [ -f "linux-ia32.tgz" ]; then
mv linux-ia32.tgz linux-ia32.tar.gz
tar xvf linux-ia32.tar.gz
cd /tmp/linux-ia32
VER=$(cat linux-ia32.ini | grep version= | cut -d "=" -f2)
rm cprocsp-cpopenssl-devel*.rpm
rm cprocsp-drv*.rpm
rm cprocsp-ipsec*.rpm
rm lsb-cprocsp-devel*.rpm
rm lsb-cprocsp-rdr-sobol*.rpm
rm sobol*.rpm
rpm2xzm *.rpm *.xzm
rm {*.rpm,*.sh,*.ini,cpverify}
for x in `find . -type f ! -name 'lsb-cprocsp-kc1*' ! -name 'lsb-cprocsp-kc2*' | fgrep .xzm | sort`; do unsquashfs -n -f $x >/dev/null; done
mkdir cprocsp-kc2-$VER-$(arch)
cp -a squashfs-root/* cprocsp-kc2-$VER-$(arch)
mv squashfs-root cprocsp-kc1-$VER-$(arch)
xzm2dir lsb-cprocsp-kc1*.xzm cprocsp-kc1-$VER-$(arch)
xzm2dir lsb-cprocsp-kc2*.xzm cprocsp-kc2-$VER-$(arch)
rm *.xzm
dir2xzm cprocsp-kc1-$VER-$(arch) cprocsp-kc1-$VER-i686.xzm
dir2xzm cprocsp-kc2-$VER-$(arch) cprocsp-kc2-$VER-i686.xzm
rm -rf /tmp/linux-ia32/cprocsp-kc?-$VER-$(arch) && rm install.desktop
else echo "Архив linux-ia32.tgz не найден в директории /tmp"
fi
cd /tmp
# сборка для архитектуры x86_64
if [ -f "linux-amd64.tgz" ]; then
mv linux-amd64.tgz linux-amd64.tar.gz
tar xvf linux-amd64.tar.gz
cd /tmp/linux-amd64
VER=$(cat linux-amd64.ini | grep version= | cut -d "=" -f2)
rm cprocsp-cpopenssl-devel*.rpm
rm cprocsp-drv*.rpm
rm cprocsp-ipsec*.rpm
rm lsb-cprocsp-devel*.rpm
rm lsb-cprocsp-rdr-sobol*.rpm
rm sobol*.rpm
rpm2xzm *.rpm *.xzm
rm {*.rpm,*.sh,*.ini,cpverify}
for x in `find . -type f ! -name 'lsb-cprocsp-kc1*' ! -name 'lsb-cprocsp-kc2*' | fgrep .xzm | sort`; do unsquashfs -n -f $x >/dev/null; done
mkdir cprocsp-kc2-$VER-$(arch)
cp -a squashfs-root/* cprocsp-kc2-$VER-$(arch)
mv squashfs-root cprocsp-kc1-$VER-$(arch)
xzm2dir lsb-cprocsp-kc1*.xzm cprocsp-kc1-$VER-$(arch)
xzm2dir lsb-cprocsp-kc2*.xzm cprocsp-kc2-$VER-$(arch)
rm *.xzm
dir2xzm cprocsp-kc1-$VER-$(arch) cprocsp-kc1-$VER-x86_64.xzm
dir2xzm cprocsp-kc2-$VER-$(arch) cprocsp-kc2-$VER-x86_64.xzm
rm -rf /tmp/linux-amd64/cprocsp-kc?-$VER-$(arch) && rm install.desktop
else echo "Архив linux-amd64.tgz не найден в директории /tmp"
fi
Вручную в браузере скачиваем архив с сайта КриптоПро CSP с rpm пакетами linux-ia32.tgz или linux-amd64.tgz, в зависимости от архитектуры ПК
ссылка на загрузку https://www.cryptopro.ru/products/csp/downloads
скопируйте данный архив(ы) в /tmp
Запускаем скрипт
Code: Select all
cd /tmp
# wget http://csp.ublaze.ru/cprocsp.tar.bz2
# tar xvf cprocsp.tar.bz2
./cprocsp.sh
Готовые xzm модули с КриптоПро CSP для архитектур i586 и x86_64
Установка переменных окружения.Заметка. Требования к уровню защиты информации КС2 содержат требования к уровню КС1 плюс дополнительные требования. Уровень защиты информации определяется потенциальными возможностями нарушителя, в соответсвии с базовой моделью нарушителя, разработанной ФАПСИ. Вкратце - для уровня КС1 предполагается, что имеем случайного внешнего нарушителя который может перхватывать информацию в каналах связи - следоватлеьно достаточные требования - математическая стойкость, корректности реализации и качество ключей. Уровень КС2 - неавторизованный внутренний нарушитель - следовательно достаточные дополнительные требования - разграничение доступа к СКЗИ, ну там есть еще кое-чего. Это влечет за собой наличие в системе сертифицированного фапси/фсб электронного замка, его основная задача - идентфикация и аутентфикация пользователя, проверка целсотности, доверенная загрузка. дополнительно - качественный аппаратный датчик случайных чисел и интерфейс к носителью ключевой информации.
Чтобы каждый раз не вводить полный путь к утилитам КриптоПро CSP выполните команды:
Code: Select all
sed -i "s|ENV_SUPATH PATH=|ENV_SUPATH PATH="$(/bin/ls -d /opt/cprocsp/{s,}bin/*|tr '\n' ':')"|g" /etc/login.defs
sed -i "s|/usr/games:|/usr/games:"$(/bin/ls -d /opt/cprocsp/{s,}bin/*|tr '\n' ':')"|g" /etc/profile
Указываем чтобы считывались нестандартные библиотеки, для этого терминале выполните команды:
Code: Select all
# Для архитектуры x86_64
echo '/opt/cprocsp/lib/amd64' >> /etc/ld.so.conf
echo '/opt/cprocsp/cp-openssl/lib/amd64' >> /etc/ld.so.conf
# для GostEngy (обеспечивает поддержку ключей и алгоритмов ГОСТ через вызовы КриптоПро CSP)
# ссылка https://update.cryptopro.ru/support/nginx-gost/bin/
echo '/opt/cprocsp/cp-openssl-1.1.0/lib/amd64' >> /etc/ld.so.conf
echo 'ldconfig' >> /etc/rc.d/rc.local
ldconfig
Code: Select all
# Для архитектуры i586
echo '/opt/cprocsp/lib/ia32' >> /etc/ld.so.conf
echo '/opt/cprocsp/cp-openssl/lib/ia32' >> /etc/ld.so.conf
# GostEngy под i586 не нашел
echo 'ldconfig' >> /etc/rc.d/rc.local
ldconfig
Для проверки версии КриптоПро CSP выполните:
Code: Select all
csptest -keyset -verifycont
Code: Select all
cpconfig -license -set здесь-серийный-номер
Code: Select all
cpconfig -license -set 4040E-G0037-EK8R3-C6K4U-HCXQG
Code: Select all
cpconfig -license -view
Управление ридерами.
Для просмотра доступных ридеров (в зависимости от кодировки):Ридеры (readers) — устройства размещения контейнеров (аппаратные токены, каталог для размещения файлов).
Code: Select all
csptest -enum -info -type PP_ENUMREADERS | iconv -f utf8
Code: Select all
csptest -enum -info -type PP_ENUMREADERS | iconv -f cp1251
Инициализация ридера HDIMAGE:Заметка. В /var/opt/cprocsp/keys/имя_пользователя хранятся ключевые контейнеры пользователей guest или root
В директории /var/opt/cprocsp/users находится хранилище сертификатов пользователей guest или root
Code: Select all
cpconfig -hardware reader -add HDIMAGE store
Code: Select all
su
toor
chmod +x /etc/rc.d/rc.pcscd
/etc/rc.d/rc.pcscd start
Управление контейнерами.Заметка. Предварительно скачайте и активируйте модулизатем подключите токен к компьютеру и выполните скрипт:Code: Select all
usm -u usm usm -u all usm -g pcsc-lite usm -g openct usm -g opensc usm -g ccid
Code: Select all
#!/bin/bash not_solaris=1 if test ! -z "$not_solaris"; then search_dirs='' for d in `echo /usr/lib*/pcsc /usr/local/lib*/pcsc /usr/libexec/SmartCardServices/*`; do if echo $d|grep -v '*'; then search_dirs="$d $search_dirs"; fi; done if test ! -z "$search_dirs"; then folder=`find -L $search_dirs -name "*ccid.bundle"` if test ! -z "$folder"; then pList_files=`find -L $folder -name "Info.plist"` if test ! -z "$pList_files"; then for pList in $pList_files; do ccid_reg.sh -add $pList 0x072F 0x90CC "ACS ACR 38U-CCID - CP" ccid_reg.sh -add $pList 0x072F 0x1204 "ACS ACR101 ICC Reader - CP" ccid_reg.sh -add $pList 0x072F 0x8201 "ACS APG8201 PINhandy 1 - CP" ccid_reg.sh -add $pList 0x072F 0x8202 "ACS APG8201 USB Reader - CP" ccid_reg.sh -add $pList 0x072F 0x90DB "ACS CryptoMate64 - CP" ccid_reg.sh -add $pList 0x0483 0xACD1 "Ancud Crypton SCR/RNG - CP" ccid_reg.sh -add $pList 0x0A89 0x0025 "Aktiv Rutoken lite - CP" ccid_reg.sh -add $pList 0x0A89 0x0030 "Aktiv Rutoken ECP - CP" ccid_reg.sh -add $pList 0x0A89 0x0080 "Aktiv PINPad Ex - CP" ccid_reg.sh -add $pList 0x0A89 0x0081 "Aktiv PINPad In - CP" ccid_reg.sh -add $pList 0x0A89 0x0060 "Aktiv Co., ProgramPark Rutoken Magistra - CP" ccid_reg.sh -add $pList 0x072f 0x90de "ACS Token - CP" ccid_reg.sh -add $pList 0x24dc 0x0102 "ARDS ZAO JaCarta LT - CP" ccid_reg.sh -add $pList 0x2fb0 0x0002 "Infocrypt Token++ - CP" ccid_reg.sh -add $pList 0x2fb0 0x0004 "Infocrypt Token++ - CP" ccid_reg.sh -add $pList 0x2fb0 0x0006 "Infocrypt Token++ lite - CP" ccid_reg.sh -add $pList 0x2fb0 0x0008 "Infocrypt Token++ lite - CP" ccid_reg.sh -add $pList 0x2fb0 0x003a "Infocrypt Token++ lite - CP" ccid_reg.sh -add $pList 0x2022 0x078a "Infocrypt HWDSSL DEVICE - CP" ccid_reg.sh -add $pList 0x2022 0x016c "Infocrypt HWDSSL DEVICE - CP" ccid_reg.sh -add $pList 0x2022 0x0172 "Infocrypt HWDSSL DEVICE - CP" ccid_reg.sh -add $pList 0x2022 0x0226 "Infocrypt HWDSSL DEVICE - CP" ccid_reg.sh -add $pList 0x2fb0 0x078a "Infocrypt HWDSSL DEVICE - CP" ccid_reg.sh -add $pList 0x2fb0 0x016c "Infocrypt HWDSSL DEVICE - CP" ccid_reg.sh -add $pList 0x2fb0 0x0172 "Infocrypt HWDSSL DEVICE - CP" ccid_reg.sh -add $pList 0x2fb0 0x0226 "Infocrypt HWDSSL DEVICE - CP" ccid_reg.sh -add $pList 0x2a0c 0x0001 "MultiSoft ltd. SCR2 - CP" ccid_reg.sh -add $pList 0x23a0 0x0008 "BIFIT ANGARA - CP" ccid_reg.sh -add $pList 0x1fc9 0x7479 "ISBC ESMART reader - CP" ccid_reg.sh -add $pList 0x2ce4 0x7479 "ESMART Token - CP" ccid_reg.sh -add $pList 0x04d8 0x003f "zis-group PRIVATE Security System Key" done fi fi fi fi cpconfig -hardware reader -add "Aktiv Rutoken ECP 00 00" -name 'Rutoken ECP 0' cpconfig -hardware reader -add "Aktiv Rutoken ECP 01 00" -name 'Rutoken ECP 1' cpconfig -hardware reader -add "Aktiv Rutoken lite 00 00" -name 'Rutoken lite 0' cpconfig -hardware reader -add "Aktiv Rutoken lite 01 00" -name 'Rutoken lite 1' cpconfig -hardware reader -add "Aktiv Co. Rutoken S 00 00" -name 'Rutoken S 0' cpconfig -hardware reader -add "Aktiv Co. Rutoken S 01 00" -name 'Rutoken S 1' cpconfig -hardware reader -add "Aktiv Rutoken Magistra 00 00" -name 'Rutoken Magistra 0' cpconfig -hardware reader -add "Aktiv Rutoken Magistra 01 00" -name 'Rutoken Magistra 1'
Создание контейнера. Создадим контейнер с именем test в локальном ридере HDIMAGE.
Code: Select all
csptest -keyset -provtype 75 -newkeyset -cont '\\.\HDIMAGE\test'

После показа окна будет предложено указать пароль на контейнер (можно указать пустой, тогда пароль запрашиваться не будет) и снова предложат двигать курсором мыши.
Примечание: Если такой пакет не установлен, будет предложено ввести любые символы с клавиатуры
Для добавления контейнера в носитель токена следует воспользоваться командой:В КриптоПро 5 появилась возможность интерактивно выбирать ридер и тип создаваемого контейнера.
Теперь можно создавать неизвлекаемые контейнеры. Для этого необходимо выполнить команду:Откроется окно выбора ридера и способа создания неизвлекаемого контейнера или обычного контейнера.Code: Select all
csptest -keyset -provtype 75 -newkeyset -cont 'имя_контейнера'
Для неизвлекаемого контейнера, в GTK-окне следует выбрать "Вид приложения" → "Active token without secure channel".
Code: Select all
csptest -keyset -newkeyset -cont '\\.\Aktiv Rutoken ECP 00 00\TestCont'
Code: Select all
csptest -card -enum -v -v
# или
list_pcsc
# или можно просмотреть доступные ридеры
csptest -enum -info -type PP_ENUMREADERS | iconv -f utf8
Code: Select all
csptest -keyset -deletekeyset -cont '\\.\HDIMAGE\test'
Code: Select all
csptestf -passwd -cont '\\.\Aktiv Rutoken ECP 00 00\TestCont' -deletek
Code: Select all
csptestf -keycopy -contsrc '\\.\HDIMAGE\Контейнер_оригинал' -contdest '\\.\Aktiv Rutoken ECP 00 00\Контейнер_копия'
Code: Select all
csptest -keycopy -contsrc '<полное название контейнера>' -contdest '\\.\<название токена>\<желаемое название контейнера>'
Для просмотра подробной информации о контейнерах воспользуйтесь командой:Заметка. Полное название контейнера см. с помощью командыCode: Select all
csptest -keyset -enum_cont -fqcn -verifyc -uniq | iconv -f cp1251
Code: Select all
csptestf -keyset -container 'ИМЯ' -info
Code: Select all
csptestf -keyset -container 'ИМЯ' -check
Code: Select all
csptest -keyset -enum_cont -fqcn -verifyc -uniq | iconv -f cp1251
Работа с сертификатами.
4 категории сертификатов:
- личные сертификаты (ставятся в хранилище umy, где u = User, my - имя хранилища) - как правило для них есть закрытый ключ (и они требуют особой установки, чтобы в хранилище появилась ссылка на этот закрытый ключ). В результате с их использованием можно, например, подписать файл.
- корневые сертификаты - краеугольнй камень безопасности, так как цепочки доверия строятся от них, то их надо добавлять в хранилища осознанно и внимательно (ставятся в uroot, также администратор может поставить их в mroot, где m = Machine, такие сертификаты будут видны в read only в root-хранилищах всех пользователей)
- промежуточные сертификаты - появляются, когда есть промежуточные УЦ (головной -> промежуточный -> пользовательский). Прямое доверие к ним не требуется (ставятся в uca, также администратор может поставить их в mca). В это же хранилище ставятся CRL-и. Обычно точки получения промежуточных сертификатов и CRL-ей правильно указаны в пользовательских сертификатах, поэтому они автоматом выкачиваются и попадают в хранилище ucache. В общем про них можно ничего особо не знать и ничего не делать.
Из под учетной записи пользователя guest промежуточные сертификаты устанавливать в uca, из под учетной записи администратора root ставить в mca. - сертификаты партнёров по общению, чтобы проверять их подписи и зашифровывать для них сообщения. Ставятся либо в umy (это беспорядок, но популярный), либо в uAddressBook
Установка сертификата с токена:Заметка. При установке в хранилище m* - все установленное доступно Всем пользователям системы.
При установке в хранилище u* - все установленное доступно только пользователю, от которого производилась установка.Имена хранилищ указаны в формате certmgr, у cryptcp похожий формат: -mroot и -uAddressBookCode: Select all
u - User m - Machine
Code: Select all
certmgr -inst -cont '<путь к контейнеру, начинающийся на \\.\>' -store uMy
Code: Select all
certmgr -inst -cont '\\.\Aktiv Rutoken ECP 00 00\Ivanov' -store uMy
Code: Select all
csptestf -absorb -cert -pattern 'rutoken'
Установка личного сертификата в контейнер ридера HDIMAGE:Заметка. В опции -pattern 'rutoken' может быть другим в зависимости от подключенного токена.
В опции -pattern так же можно указать пустые ' ' чтобы установить все сертификаты в uMy. Пример:Code: Select all
csptestf -absorb -cert -pattern ''
Code: Select all
certmgr -inst -file '/путь-до-сертификата/имя-сертификата.cer' -cont '<путь к контейнеру, начинающийся на \\.\>' -store uMy
Code: Select all
certmgr -inst -provtype 80 -provname "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -cont '<путь к контейнеру, начинающийся на \\.\>' -pin 12345 -file '/путь-до-сертификата/имя-сертификата.cer'
Code: Select all
certmgr -inst -cert -file '/путь-до-сертификата/имя-сертификата.cer' -store uRoot
Code: Select all
certmgr -inst -crl -file '/путь-до-файла/имя-файла.crl' -store uca
Code: Select all
certmgr -inst -cert -file '/путь-до-файла/имя-файла.p7b' -store uca
Code: Select all
certmgr -list
Code: Select all
# для учетной записи guest
certmgr -list -store uRoot
# для учетной записи root
certmgr -list -store mRoot
Code: Select all
certmgr -list -file '/путь-до-сертификата/имя-сертификата.cer'
Code: Select all
certmgr -delete
Удалить корневой сертификат под номером 1
Code: Select all
# для учетной записи guest
certmgr -delete 1 -store uRoot
# для учетной записи root
certmgr -delete 1 -store mRoot
Code: Select all
# удалить все сертификаты
certmgr -delete -all
# удалить все сертификаты из хранилища uMy
certmgr -delete -store uMy
# удалить все сертификаты из хранилища uRoot для учетной записи guest
certmgr -delete -store uRoot
# удалить все сертификаты из хранилища mRoot для учетной записи root
certmgr -delete -store mRoot
Закрытые ключи к сертификатам находятся тут: /var/opt/cprocsp/keys.
Поэтому эти ключи переносятся просто: создаем архив и переносим на нужную машину в тот же каталог.
Экспорт сертификата:
Code: Select all
certmgr -export -dest cert.cer
Code: Select all
csptest -keyset -enum_cont -verifycontext -fqcn
Code: Select all
certmgr -inst -file 1.cer -cont '\\.\HDIMAGE\container.name'
Code: Select all
Can not install certificate
Public keys in certificate and container are not identical
В версии КриптоПРО 5 появилась графическая утилита для работы с сертификатами - cptools.
Для запуска cptools откройте терминал и введите
Code: Select all
cptools




Так же, с его помощью, можно установить сертификат из токена в хранилище uMy.
Создание запроса и получение сертификата в УЦ.
Для создания запроса потребуется:
- DN (cn=Test User,e=ca@porteus.org)
- имя контейнера (в локальном хранилище hdimage: \\.\HDIMAGE\test)
- имя файла запроса (test.req)
Типы применения:Внимание! Для использования проверки подлинности клиента в браузере потребуется также указать, что запрос создается по ГОСТ 2001 и добавляется тип применения подлинности клиента: -provtype 75 -certusage "1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2".
С помощью опции -certusage можно указать OID назначение сертификата
Назначение сертификата представляется в сертификате объектным идентификатором, присвоенным этой политике, - OID. Если в сертификате указано несколько политик, то это означает, что сертификат соответствует всем этим политикам списка.
Code: Select all
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 Защищенная электронная почта
1.3.6.1.5.5.7.3.8 Простановка штампов времени
1.3.6.1.5.5.7.3.9 Может использоваться для формирования электронной подписи OCSP-запросов
1.3.6.1.4.1.311.10.5.1 Цифровые права
1.3.6.1.4.1.311.10.3.12 Подписывание документа
Объектные идентификаторы (OID) определяют отношения, при осуществлении которых электронный документ, подписанный ЭЦП, будет иметь юридическое значение. OID, зарегистрированные в Удостоверяющем центре, включаются состав следующих расширений сертификата ключа подписи: Key Usage (использование ключа), Extended Key Usage (расширенное использование ключа), Application Policy (политики применения сертификата).
Code: Select all
cryptcp -creatrqst -dn "cn=Test User,e=ca@porteus.org" -provtype 75 -nokeygen -cont '\\.\HDIMAGE\test' -certusage "1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2" test.req
Показать содержимое запроса:
Code: Select all
cat test.req
- Откройте в браузере ссылку http://www.cryptopro.ru/certsrv (тестовый удостоверяющий центр КриптоПро).
- Нажмите «Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64».
- Вставьте в поле «Base-64-шифрованный запрос сертификата» содержимое файла test.req и нажмите кнопку «Выдать».
- Сохраните файл по ссылке «Загрузить цепочку сертификатов» (по умолчанию предлагается имя certnew.p7b)
Code: Select all
certmgr -list -file 'certnew.p7b'
Code: Select all
certmgr -inst -file 'certnew.p7b' -store uRoot
Установите сертификат клиента (введите пароль на контейнер \\.\HDIMAGE\test при запросе):
Code: Select all
certmgr -inst -file 'certnew.p7b' -store uMy -cont '\\.\HDIMAGE\test' -inst_to_cont
Проверка цепочки сертификатов.
Сертификаты популярных удостоверяющих центровВнимание! В кэше сертификатов для выпущенного сертификата должны присутствовать корневые сертификаты удостоверяющих центров. В противном случае он будет недоступен в плагине для браузера!
Code: Select all
Удостоверяющий Центр Источник Сертификаты
ЗАО «Национальный удостоверяющий центр» https://www.nucrf.ru/info/ https://www.nucrf.ru/download/nucrf.p7b
Удостоверяющий центр СКБ Контур https://ca.kontur.ru/about/certificates (выбрать 2015 год) http://cdp.skbkontur.ru/certificates/kontur-root-2015.crt
Code: Select all
cryptcp -copycert -dn E=user@test.ru -df personal.cer
Code: Select all
CP_PRINT_CHAIN_DETAIL=1 cryptcp -copycert -dn E=user@test.ru -df personal.cer
Code: Select all
certmgr -inst -store uRoot -file kontur-root-2015.crt
Code: Select all
cryptcp -copycert -dn E=user@test.ru -df personal.cer
Электронная подпись.
Для электронной подписи файла необходимо указать сертификат и имя подписываемого файла:
Примечание: Проще всего для указания сертификата использовать адрес e-mail.
Code: Select all
cryptcp -sign -dn E=user@test.ru -der zayavlenie.pdf
- -dn E=user@test.ru — сертификат по e-mail;
- -der — использовать формат DER для файла подписи (по умолчанию используется формат Base64);
- zayavlenie.pdf — имя подписываемого файла.
Для проверки подписи выполните:
Code: Select all
cryptcp -verify zayavlenie.pdf.sig
Для извлечения файла необходимо указать его имя в конце команды проверки подписи
Code: Select all
cryptcp -verify zayavlenie.pdf.sig zayavlenie.pdf
Для просмотра доступных криптографических провайдеров:
Code: Select all
cpconfig -defprov -view_type
Code: Select all
cpconfig -defprov -view -provtype 75
Code: Select all
cpconfig -defprov -setdef -provtype 75 -provname "Crypto-Pro GOST R 34.10-2001 KC1 CSP"
Code: Select all
cpconfig -defprov -setdef -provtype 80 -provname "Crypto-Pro GOST R 34.10-2012 KC1 CSP"
Code: Select all
cpconfig -defprov -setdef -provtype 81 -provname "Crypto-Pro GOST R 34.10-2012 KC1 Strong CSP"