Hdimage где находится в windows 10
Для удобства использования утилит КриптоПро создадим на них символьные ссылки, для этого выполните:
Просмотр версии КриптоПро:
Для установки лицензии выполните (с правами root):
При использовании токенов сервис pcscd должен быть запущен. Проверка статуса pcscd:
если он выключен, то включите его:
Узнать модель подключенного токена:
Работа с криптоконтейнерами
1. Проверить наличие доступных контейнеров:
Имена контейнеров используются для установки личных сертификатов.
- Считыватель HDIMAGE размещается в /var/opt/cprocsp/keys/<имя пользователя>/ т.е в данном случае используется жесткий диск для хранения ключей.
- Считыватель FLASH означает, что используется флешка для хранения приватных ключей.
- Также считывателем может выступать токен.
2. Имена контейнеров могут содержать символы на кириллице, поэтому чтобы корректно отобразить контейнеры используйте следующую команду:
Для дальнейшего использования имен контейнеров содержащих кодировку cp1251, выведем список контейнеров с уникальными именами:
3. Просмотр подробной информации о контейнере:
4. Перечисление контейнеров пользователя:
5. Перечисление контейнеров компьютера:
6. Открыть(проверить) контейнер пользователя:
7. Открыть(проверить) контейнер компьютера:
Установка личных сертификатов
Установку личных сертификатов необходимо производить в консоли обычного пользователя (не root).
1. Установка сертификата без привязки к ключам:
2. Установка личного сертификата cert_bob.cer, сертификат при этом попадает в пользовательское хранилище uMy. Приватный ключ находится на флешке.
3. Установка сертификата с токена (в конце команды указывается контейнер)
если сертификат не привязан к контейнеру на токене, то при установке укажите путь до него через параметр -file:
Установка корневых сертификатов
При установке корневых сертификатов достаточно указать хранилище uRoot. При указании mRoot (при наличии прав администратора) корневой сертификат будет доступен всем пользователям системы.
1. Установка в хранилище КриптоПро:
2. Установка в хранилище ПК:
3. Установка списка отозванных сертификатов crl:
1. Просмотр установленных сертификатов:
2. Просмотр установленных сертификатов в локальном хранилище uMy:
3. Просмотр сертификатов в хранилище ПК (обычно сюда устанавливаются корневых сертификаты):
4. Просмотр сертификатов в контейнере:
5. Просмотр промежуточных сертификатов:
1. Удалить сертификат из личного хранилища сертификатов
Просмотрите установленные сертификаты:
Изучите список всех установленных сертификатов (в общем списке отображаются абсолютно все сертификаты).
Для удаления следует выполнить команду в Терминале:
Если установлено более одного сертификата, то будет предложено указать номер удаляемого сертификата.
2. Удалить сертификаты, установленные в хранилище КриптоПро:
Если установлено более одного сертификата, то будет предложено указать номер удаляемого сертификата.
3. Удалить все сертификаты, установленные в хранилище КриптоПро:
4. Удалить все сертификаты, установленные в хранилище ПК:
Перенос контейнера с flash носителя в локальное хранилище ПК
1. Активируем хранилище HDIMAGE:
2. Посмотрим, какие контейнеры доступны на флешке:
3. Посмотрим доступные контейнеры:
Как видим, появился новый контейнер \\.\HDIMAGE\bob
Теперь flash носитель можно отключить, он нам больше не понадобится.
5. Установим пользовательский сертификат с привязкой к закрытому контейнеру \\.\HDIMAGE\bob
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Загрузить последнюю версию Крипто-Про с официального сайта
Открыть Пуск->Утилиты->Менеджер файлов mc
перейти в каталог куда загрузили архив
Распакуем архив
$ tar -xf linux-amd64_deb.tgz
Перейдем в каталог
$ cd linux-amd64_deb
получим то что на картинке ниже
Жмем клавишу Enter
Выбираем все пункты нажимая на клавишу "Пробел" переход осуществляется клавишами вниз/вверх
Жмем клавишу Enter
Жмем клавишу Enter
Жмем клавишу Enter
Жмем клавишу Enter
Вводим свой серийный номер. Регистр нужно строго соблюдать.
Жмем клавишу Enter
Жмем выбираем Exit клавишами Tab, жмем клавишу Enter, Выбираем Yes, жмем клавишу Enter
они все есть в репозитарии астры, ничего нигде искать дополнительно не надо
Библиотека libccid не ниже 1.4.2
Проверить USB токены можно командой
$ /opt/cprocsp/bin/amd64/list_pcsc
Если что то не работает пишите возможно я что то упустил, а так же пишите коды ошибок, будем пополнять базу знаний и возможные пути решений
$ tar -xf cades_linux_amd64.tar.gz
Конвертируем в deb пакеты
<вывод команды>
Warning: Skipping conversion of scripts in package cprocsp-pki-cades: postinst prerm
Warning: Use the —scripts parameter to include the scripts.
cprocsp-pki-cades_2.0.0-2_amd64.deb generated
cprocsp-pki-phpcades_2.0.0-2_amd64.deb generated
Warning: Skipping conversion of scripts in package cprocsp-pki-plugin: postinst prerm
Warning: Use the —scripts parameter to include the scripts.
cprocsp-pki-plugin_2.0.0-2_amd64.deb generated
Warning: Skipping conversion of scripts in package lsb-cprocsp-devel: prerm
Warning: Use the —scripts parameter to include the scripts.
lsb-cprocsp-devel_4.0.9921-6_all.deb generated
</вывод команды>
если вывод команды был "bash: alien: команда не найдена", то вам надо читать внимательней потребности, установить alien
Выбор ранее не выбранного пакета lsb-cprocsp-devel.
(Чтение базы данных … на данный момент установлено 232442 файла и каталога.)
Подготовка к распаковке lsb-cprocsp-devel_4.0.9921-6_all.deb …
Распаковывается lsb-cprocsp-devel (4.0.9921-6) …
Выбор ранее не выбранного пакета cprocsp-pki-cades.
Подготовка к распаковке cprocsp-pki-cades_2.0.0-2_amd64.deb …
Распаковывается cprocsp-pki-cades (2.0.0-2) …
Выбор ранее не выбранного пакета cprocsp-pki-phpcades.
Подготовка к распаковке cprocsp-pki-phpcades_2.0.0-2_amd64.deb …
Распаковывается cprocsp-pki-phpcades (2.0.0-2) …
Выбор ранее не выбранного пакета cprocsp-pki-plugin.
Подготовка к распаковке cprocsp-pki-plugin_2.0.0-2_amd64.deb …
Распаковывается cprocsp-pki-plugin (2.0.0-2) …
Настраивается пакет lsb-cprocsp-devel (4.0.9921-6) …
Настраивается пакет cprocsp-pki-cades (2.0.0-2) …
Настраивается пакет cprocsp-pki-phpcades (2.0.0-2) …
Настраивается пакет cprocsp-pki-plugin (2.0.0-2) …
Обрабатываются триггеры для libc-bin (2.24-11+deb9u3) …
на всякий пожарный установку лучше повторить, т.к. бывали случаи что установка прошла успешно, а библиотек на месте не было
на всякий пожарный что бы было, если вдруг с путями кто-нибудь из программ случайно, обязательно затупит, сделаем симлинки на библиотеки
создаем симлинк для корректной работы связи расширения браузера с библиотекой установленного плагина
так же желательно сделать симлинки нашел в какой то документации, возможно в них и нет необходимости, эти каталоги это для корректной работы плагинов браузеров и библиотек плагинов,
Одно из самых главных требований при работе с этим плагином, это нужно при КОПИРОВАНИИ или СОЗДАНИИ контейнера установить пинкод
Разархивируем
$ unzip IFCPlugin-3.0.0-x86_64.deb.zip
создаем симлинк для корректной работы связи расширения браузера с библиотекой установленного плагина
config = cert_from_registry = "false";
set_user_pin = "false";
>
Заходим в каталог куда скачали архив
$ unzip ifc.cfg.zip
Копируем конфигурационный файл
Перейти в меню — Дополнительные инструменты — Расширения и включить плагин
На случай диагностики ошибок ifcplugin нужен будет лог /var/log/ifc/engine_logs/engine.log
Вложения
DavidovichDV
New member
Общее описание выводов ошибок
[ErrorCode: 0x00000000]
\\ Код ошибки 0, значит все прошло успешно
Error number 0x8009001f (2148073503).
Неправильный параметр набора ключей.
\\ скорее всего нужно добавить пинкод или другой тип стандарта контейнера если ошибка возникает при копировании ключей
\\ -pinsrc 12345678
\\ -pindest 12345678
ERROR: SCardListReaders(NULL)
если ключ вставлен, то скорее всего либо у вас не установлены требуемые библиотеки/драйвера, либо что то мешает его распознать(какой-то пакет из состава Крипто-Про)
Спойлер: Частые команды для управления ключами и сертификатами
Проверить/отобразить USB токены можно командой
$ /opt/cprocsp/bin/amd64/list_pcsc
Примерный вывод:
Aktiv Co. Rutoken S 00 00
если получили ERROR: SCardListReaders(NULL) , если ключ вставлен, то скорее всего либо у вас не установлены требуемые библиотеки/драйвера, либо что то мешает его распознать(какой-то пакет из состава Крипто-Про)
Спойлер: Вывести список всех ключевых носителей и контейнеров
Вывести список всех ключевых носителей и контейнеров
$ /opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifyc -fqcn
<вывод команды>
CSP (Type:80) v4.0.9017 KC2 Release Ver:4.0.9944 OS:Linux CPU:AMD64 FastCode:READY:SSSE3.
AcquireContext: OK. HCRYPTPROV: 28131731
\\.\Aktiv Co. Rutoken S 00 00\key1
OK.
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 1,380 sec
[ErrorCode: 0x00000000]
</вывод команды>
Вывод всех ключевых носителей и контейнеров с отображением уникального имени
$ /opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifyc -fqcn -uniq
<вывод команды>
CSP (Type:80) v4.0.9018 KC2 Release Ver:4.0.9958 OS:Linux CPU:AMD64 FastCode:READY:SSSE3.
AcquireContext: OK. HCRYPTPROV: 16527635
\\.\HDIMAGE\key0 |\\.\HDIMAGE\HDIMAGE\\key0.000\1174
OK.
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 2,130 sec
[ErrorCode: 0x00000000]
</вывод команды>
Нужная нам информация между строками " AcquireContext: OK. " и " OK . "
Еще возможный вывод \\.\HDIMAGE\ и \\.\FLASH\, где
\\.\HDIMAGE\ это ключевой носитель сохранен на жестком диске, вроде считывателя реестра в Windows версии. "key0" это имя ключевого контейнера на носителе.
$ /opt/cprocsp/bin/amd64/csptest -keycopy -contsrc ‘\\.\HDIMAGE\key0’ -contdest ‘\\.\Aktiv Co. Rutoken S 00 00\key1’ -typesrc 75 -typedest 75 -pinsrc 12345678 -pindest 12345678
csptest -keycopy \\ Запуск копирования
-contsrc ‘\\.\HDIMAGE\key0’
\\ Указываем откуда копируем "\\.\HDIMAGE" это указатель откуда брать ключ в данном случае из локального расположения,
навроде считывателя реестра в Windows версии. "key0" это имя ключевого контейнера на носителе
-contdest ‘\\.\Aktiv Co. Rutoken S 00 00\key1’
\\ Указываем куда копируем ‘\\.\Aktiv Co. Rutoken S 00 00\key1’ это указатель на устройство
ОБЯЗАТЕЛЬНО . Имя ключей должно отличаться
ОБЯЗАТЕЛЬНО . Имя ключей должно быть на латинице,
КАТЕГОРИЧЕСКИ не рекомендуется использовать кириллицу или любой другой алфавит отличный от латиницы
-typesrc 75 \\ Тип сформированного контейнера откуда копируется по ГОСТУ где 75(ГОСТ-2001), 80(ГОСТ-2012)
-typedest 75 \\ Тип сформированного контейнера куда копируется
-pinsrc 12345678 \\ Пинкод источника ключевого носителя
-pindest 12345678 \\ Пинкод ключевого носителя
Копирование контейнера с ключами по уникальным именам на случай если имя контейнера содержит кириллицу или какие нибудь непонятные символы
$ /opt/cprocsp/bin/amd64/csptest -keycopy -contsrc ‘HDIMAGE\\key0.000\1174’ -contdest ‘\\.\Aktiv Co. Rutoken S 00 00\key1’ -typesrc 75 -typedest 75 Удаление контейнера с ключами по уникальному имени
$ /opt/cprocsp/bin/amd64/csptest -keyset -delete -cont ‘HDIMAGE\\key0.000\1174’ Спойлер: Импорт, экспорт и удаление сертификатов в хранилище сертификатов *** Импорт корневого доверенного сертификата
$ /opt/cprocsp/bin/amd64/certmgr -inst -store uroot -file ROOT.cer
Вместо ROOT.cer подставить свой корневой серитикат который вы хотите загрузить Спойлер: *** Импорт личного сертификата в хранилище из ключевых носителей
*** Загрузка личного сертификата в хранилище в данном случае из локального считывателя
$ /opt/cprocsp/bin/amd64/csptestf -absorb -cert -pattern ‘HDIMAGE’
*** Загрузка личного сертификата в хранилище в данном случае из рутокена
$ /opt/cprocsp/bin/amd64/csptestf -absorb -cert -pattern ‘rutoken’
*** Загрузка личного сертификата в хранилище в данном случае из Флэш накопителя
$ /opt/cprocsp/bin/amd64/csptestf -absorb -cert -pattern ‘FLASH’
*** Вывод личных сертификатов в личном хранилище
$ /opt/cprocsp/bin/amd64/certmgr -list -cert -store uMy
*** Вывод субъекта и серийного номера загруженных личных сертификатов в личном хранилище
$ /opt/cprocsp/bin/amd64/certmgr -list -cert -store uMy | grep -iE "^Serial|^Subject"
*** Полный вывод загруженных сертификатов корневых удостоверяющих центров в личном хранилище
$/opt/cprocsp/bin/amd64/certmgr -list -cert -store uroot
*** Вывод субъекта и серийного номера загруженных сертификатов корневых удостоверяющих центров в личном хранилище
$ /opt/cprocsp/bin/amd64/certmgr -list -cert -store root | grep -iE "^Serial|^Subject"
*** Полный вывод загруженных сертификатов промежуточных серверов в личном хранилище
$ /opt/cprocsp/bin/amd64/certmgr -list -cert -store uca
*** Вывод субъекта и серийного номера загруженных сертификатов промежуточных серверов в личном хранилище
$ /opt/cprocsp/bin/amd64/certmgr -list -cert -store uca | grep -iE "^Serial|^Subject"
Спойлер: *** Загрузка личного сертификата в хранилище, в данном случае из всех считывателей rutoken
*** Загрузка личного сертификата в личное хранилище сертификатов, в данном случае из всех считывателей rutoken
/opt/cprocsp/bin/amd64/csptestf -absorb -cert -pattern ‘rutoken’
<вывод команды>
Match: SCARD\rutoken_32b56458\0B00\7E72
OK.
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 1,760 sec
[ErrorCode: 0x00000000]
</вывод команды>
<описание вывода>
Match: SCARD\rutoken_32b56458\0B00\7E72
\\Match это означает что он нашел ключевые носители удовлетворяющие условию и загрузил с него все сертификаты
\\Skip это значит что этот считыватель и контейнер не соответствует запросу и будет проигнорирован
</описание вывода>
/opt/cprocsp/bin/amd64/certmgr -inst -store uroot -file 48b19fb33bb637c88a54d19650730b67e42db121.cer
файл сертификата прикреплен
Спойлер: —Экспорт личного сертификата и закрытого ключа
*** Экспорт в файл сертификата из хранилища
$ /opt/cprocsp/bin/amd64/certmgr -export -cert -dn "CN=" -dest ‘cert.crt’
Сначала выведет список всех имеющихся личных сертификатов, затем нужно ввести порядковый номер сертификата
— Эспорт в файл закрытого ключа из хранилища
/opt/cprocsp/bin/amd64/certmgr -export -file 1234.pfx
Сначала выведет список всех имеющихся личных сертификатов, затем нужно ввести порядковый номер сертификата
Вложения
Blaze
New member
и за что отвечают эти параметры?
P.S. С госзакупками проблем со входом не возникло. Спасибо.
DavidovichDV
New member
и за что отвечают эти параметры?
P.S. С госзакупками проблем со входом не возникло. Спасибо.
1. Да может.
2. нет, можно воспользоваться любым контейнером
3. Это либо от старого функционала который в новой версии не работает, либо планируемый на будущее и сейчас тестируется у разработчика
лучше оставить так как работает, любы изобретения могут привести к сбоям в работе
Blaze
New member
личный сертификат установлен в хранилище -store uMy с привязкой к контейнеру закрытого ключа, в локальном ридере HDIMAGE
В Astra Linux применяется какая версия пакета pcsc-lite ?
У меня вечно, пока не закроешь страницу, висит на обращении к средству электронной подписи и бесконечно бегает анимация

DavidovichDV
New member
У вас плагин версии 3.0.3 он не работает, нужен 3.0.0, проверено на многих дистрибутивах
pcsc-1.8.20, но это существенной роли не сыграет главное это версия плагина.
amotash
New member
Вложения



DavidovichDV
New member
amotash
New member
DavidovichDV
New member
amotash
New member
Вложения

mfc31
New member
DavidovichDV
New member
renbuar
New member
По данной инструкции зашел на площадки и госуслуги. Спасибо.
renbuar
New member
Andrey, [05.10.18 11:35]
Но мы сделали параметр для отключения требований RFC6125, который может подвергнуть систему опасности для атак с подменой сертификатов:
[root@test-x64-centos7
Система цифровых сертификатов используется аналогично паролям, для подтверждения личности пользователя или ПК, обмена электронной информацией в виртуальной сети. Легковесные файлы содержат личные данные, которые применяются при идентификации личности. Хранилище сертификатов в ОС Windows 10 находится в секретном месте. Иногда фирмам приходится настраивать личные сертификаты, поэтому им важно знать местоположение файлов.
Для чего знать, где хранятся сертификаты?
Каждый файл в хранилище предусмотрен для защиты операционки цифрового устройства. Они препятствуют проникновению вредоносных программ в систему. Отдельная цифровая подпись отвечает за определенный скачанный софт.

Знание о том, где хранятся такие файлы, требуется в случае просмотра или установки корневых, личных сертификатов. В «десятке» инструменты находятся в контейнере двух типов:
- Certificate store локального ПК – включают список файлов для проверки оригинальности сервера.
- Certificate store для пользователя – хранят сертификаты утилит, которые запускает юзер.
Сертификаты представляют собой корневые и личные файлы. Первые являются составным элементом секретного ключа. Вторые предназначены для идентификации юзеров при обмене электронных данных. Поменять настройки в «десятке» можно через mmc оснастки, в том числе через хранилище.

Просмотр установленных сертификатов Windows 10
Список важных объектов: сертификаты для оборудования, персональные файлы – находят несколькими способами с помощью встроенных инструментов, сторонних утилит.
Через «КриптоПро»
Криптопровайдер предназначен для организации защиты программных обеспечений методом шифрования. Менеджер защищает конфиденциальную информацию при обмене данными через сеть интернет, обеспечивает юридическую достоверность электронных документов.
Для включения программы ее требуется скачать с официального сайта разработчика, инсталлировать на компьютер. Все действия выполняются с правами Администратора. Во время установки ПО можно выполнять настройки через панель свойств. После инсталляции потребуется перезагрузить устройство.

Просмотр проверочных ключей ЭЦП происходит по следующему алгоритму:

- Открыть «Все программы».
- Выбрать «КриптоПро».


В открывшемся окне пользователь увидит все актуальные корневые, личные файлы. Обладая администраторскими правами, можно управлять файлами в «десятке»: выполнять копирование, редактирование, деинсталлировать файлы.
Через Certmgr
Диспетчер разрешает проводить различные действия с цифровыми документами. Консоль является частью операционной системы, включает инструменты для функций управления.
Для просмотра данных нужно следовать инструкции:

- Открыть Командную строку, набрать: c Нажать «Enter».

- В меню появившегося окна выбрать «Личное» и «Корневые сертификаты…». Зайдя в разделы, можно развернуть реестры с полным списком ключей.

Без прав Администратора утилита не заработает. Софт имеет ограничение в шифровании данных, где происходит специальное кодирование файлов.
Через Internet Explorer
Браузер интегрирован в ОС Виндовс 10, включает набор инструментов, позволяющих искать и просматривать информацию в виртуальной сети. Если веб-проводник отсутствует в «десятке», его легко можно скачать с официального источника.
С помощью браузера можно найти ЭЦП, следуя инструкции:


- Тапнуть по разделу «Содержание».
- Нажать на подраздел «Сертификаты».

В результате откроется содержимое с полным списком искомых файлов. В веб-сервисе существует возможность их добавления. Юзеру стоит помнить, что корневые ЭЦП удостоверяющих центров деактивировать запрещено.
Аналогичный способ поиска документов выполняется через Центр управления сетями или общим доступом:



Преимущество метода заключается в том, что посмотреть список ЭЦП можно без администраторских прав. Для обычных людей доступен только просмотр, вносить изменения запрещено.
Через контроль управления
Представляет собой один из важнейших компонентов ОС Виндовс 10. С помощью встроенного средства осуществляется управление, запуск, настройка большинства системных функций. Также можно найти, где лежат сертифицированные файлы ЭЦП для их редактирования.
- Нажать: «Win + R».
- Ввести в строку запроса: cmd. Нажать «Enter».

- после этого перейти по команде mmc в терминал;


- В открывшемся списке тапнуть «Добавить изолированную оснастку».


Все действия пользователь может выполнять только с правами Администратора. Такой вариант подходит не каждому человеку, так как некоторые запросы вводятся через Командную строку. Сервисом обычно пользуются системные администраторы или люди, хорошо разбирающиеся в теме.
Существует целый список сторонних ресурсов, позволяющих управлять сертификатами, инсталлированными в ОС Виндовс 10. Но пользоваться такими утилитами не рекомендуется, так как нет гарантии, что в них присутствует команда отправки сертификата на внешний сервер. Надежное сертифицированное приложение – это «КриптоПро», которое дает гарантию защиты от несанкционированного доступа посторонних лиц к ЭЦП.

Также в последних версиях Винды зашифрованные файлы просматривают, перейдя по пути: C:Users\ПОЛЬЗОВАТЕЛЬ\AppData\Roaming\Microsoft\System\Certificates. Словосочетание «Пользователь» меняется на название учетной записи. В результате откроется полный список засекреченных данных.
Сертификаты созданы для безопасной работы цифровой техники. Их достоверность гарантирована сертификационным центром. Управление ЭЦП требует определенных знаний, поэтому работу должен выполнять специалист или продвинутый пользователь.
Скопировать в корень дискеты или флэшки сертификат и приватный ключ (из каталога 999996.000 , 999996 — название (alias) контейнера):
Выполнить команду по копированию ключа с флэшки на диск, ключ попадет в пользовательское хранилище My .
Необходимо выполнять под пользователем, который будет использовать данный контейнер для подписи.
С жесткого диска
Скопировать приватный ключ в хранилище (контейнер), где <username> — имя пользователя linux:
Поставить «минимальные» права:
Узнать реальное название контейнера:
Ассоциировать сертификат с контейнером, сертификат попадет в пользовательское хранилище My :
Если следующая ошибка, нужно узнать реальное название контейнера (см. выше):
Установить сертификат УЦ из-под пользователя root командой:
Проверка успешности установки закрытого ключа
Если выводится PrivateKey Link: Yes. Container: HDIMAGE\\999996.000\D7BB , то есть и сертификат, и приватный ключ, а если выводится PrivateKey Link: No — связи нет, и использовать такой контейнер для подписи не удастся.
Добавление тестового сертификата
Ввести пароль на контейнер test123 .
Ввести пароль на контейнер. По-умолчанию: 12345678
Удаление сертификата
Проверка сертификата
Просмотр всех атрибутов сертификата
В cryptcp нет необходимых инструментов для получения всех атрибутов сертификата. Поэтому следует использовать openssl , но настроив его.
Получаем SHA 1 хеши:
В цикле извлекаем сертификаты:
Настройка openssl для поддержки ГОСТ:
В файл /etc/ssl/openssl.cnf
Экспорт сертификатов на другую машину
Закрытые ключи к сертификатам находятся тут: /var/opt/cprocsp/keys . Поэтому эти ключи переносятся просто: создаем архив и переносим на нужную машину в тот же каталог.
Экспорт самих сертификатов (если их 14):
Переносим эти файлы на машину и смотрим, какие контейнеры есть:
И как обычно, связываем сертификат и закрытый ключ:
Если закрытый ключ и сертификат не подходят друг к другу, будет выведена ошибка:
Если все успешно:
Если нет закрытого ключа, то просто ставим сертификат:
Подписание документа ЭЦП
Пример создания ЭЦП (по SHA1 Hash):
| [ReturnCode: x] | Описание | Возвращаемый код завершения в баше $? |
|---|---|---|
| 0 | успешно | 0 |
| 0x8010006b | Введен неправильный PIN | 107 |
| 0x2000012d | Сертификат не найден | 45 |
| 0x20000065 | Не удалось открыть файл | 101 |
Проверка подписи ЭЦП
Для верифицирования сертификатов нужен сертификат удостоверяющего центра и актуальный список отзыва сертификатов, либо настроенный для этого revocation provider.
Корневой сертификат УЦ, список отзыва сертификата является одним из реквизитов самого сертификата.
Проверка конкретной подписи из локального хранилища по его хешу:
Проверить, взяв сертификат из file1.sig , подпись файла file2.sig . Практически, надо использовать один и тот же файл:
| [ReturnCode: x] | Текст | Описание | Возвращаемый код завершения в баше $? |
|---|---|---|---|
| 0 | Успешно | 0 | |
| 0x80091004 | Invalid cryptographic message type | Неправильный формат файла | 4 |
| 0x80091010 | The streamed cryptographic message is not ready to return data | Пустой файл | 16 |
Получение исходного файла
Будет ругаться на сертификат (так как не будет проверки), но подпись удалит. Вариант с проверкой:
Подключение КриптоПро в Mono
В связи с переходом на Linux возникла необходимость переноса одной из наших серверных систем написанной на C# в Mono. Система работает с усиленными ЭЦП, поэтому одной из поставленных перед нами задач была проверка работоспособности ГОСТовых сертификатов от КриптоПро в mono. Сам КриптоПро уже довольно давно реализовал CSP под Linux, но первая же попытка использования показала, что нативные классы криптографии Mono (аналогичные тем, что есть в базовом .Net — X509Store, X509Certificate2 и проч.) не только не работают с ГОСТовыми ключами, они даже не видят их в своих хранилищах. В силу этого работу с криптографией пришлось подключать напрямую через библиотеки КриптоПро.
Установка сертификата
Перед тем как реализовывать код, необходимо установить сертификат и убедится что он нормально работает.
Компонент КриптоПро CSP версии 3.9 был установлен в Centos 7 в папку /opt/cprocsp. Для того, чтобы не было конфликтов между утилитами mono и КриптоПро, имеющих одинаковые названия (например, certmgr), в переменные окружения не стали вносить путь до папки и все утилиты вызывались по полному пути.
Для начала определяем список считывателей:
/opt/cprocsp/bin/amd64/csptest -enum -info -type PP_ENUMREADERS | iconv -f cp1251
Если среди списка нет считывателя с папки на диске (HDIMAGE) ставим его:
/opt/cprocsp/sbin/amd64/cpconfig -hardware reader -add HDIMAGE store
После чего можно создавать контейнеры вида ‘\\.\HDIMAGE\<имя контейнера>‘ путем либо создания нового контейнера с ключами:
/opt/cprocsp/bin/amd64/csptest -keyset -provtype 75 -newkeyset -cont ‘\\.\HDIMAGE\test’
либо формируя папку /var/opt/cprocsp/keys/root/<имя контейнера>.000, в которой располагается стандартный набор файлов контейнера КриптоПро (*.key, *.mask, и проч.).
После этого сертификат из контейнера можно установить в хранилище сертификатов:
/opt/cprocsp/bin/amd64/certmgr -inst mMy -cont ‘\\.\HDIMAGE\<имя контейнера>‘
Установленный сертификат можно увидеть с помощью следующей команды:
/opt/cprocsp/bin/amd64/certmgr -list mMy
Работу сертификата можно проверить следующим образом:
/opt/cprocsp/bin/amd64/cryptcp – sign -norev -thumbprint <отпечаток> <файл> <файл подписи>
/opt/cprocsp/bin/amd64/cryptcp – verify -norev
Если с сертификатом все нормально, то можно переходить к подключению в коде.
Подключение в коде
Несмотря на процесс переноса в Linux система должна была продолжать функционировать и в среде Windows, поэтому внешне работа с криптографией должна была осуществляться через общие методы вида «byte[] SignData(byte[] _arData, X509Certificate2 _pCert)», которые должны были одинаково работать как в Linux, так и в Windows.
Анализ методов библиотек криптографии оказался удачным, т. к. КриптоПро реализовало библиотеку «libcapi20.so» которая полностью мимикрирует под стандартные библиотеки Windows шифрования — «crypt32.dll» и «advapi32.dll». Возможно, конечно, не целиком, но все необходимые методы для работы с криптографии там в наличии, и почти все работают.
Поэтому формируем два статических класса «WCryptoAPI» и «LCryptoAPI» каждый из которых будет импортировать необходимый набор методов следующим образом:
Синтаксис подключения каждого из методов можно либо сформировать самостоятельно, либо воспользоваться сайтом pinvoke, либо скопировать из исходников .Net (класс CAPISafe). Из этого же модуля можно почерпнуть константы и структуры связанные с криптографией, наличие которых всегда облегчают жизнь при работе с внешними библиотеками.
А затем формируем статический класс «UCryptoAPI» который в зависимости от системы будет вызывать метод одного из двух классов:
Таким образом используя методы класса UCryptoAPI можно реализовывать почти единый код под обе системы.
Поиск сертификата
Работа с криптографией обычно начинается с поиска сертификата, для этого в crypt32.dll имеется два метода CertOpenStore (открывает указанное хранилище сертификатов) и простой CertOpenSystemStore (открывает личные сертификаты пользователя). В силу того, что работа с сертификатами не ограничивается только личными сертификатами пользователя подключаем первый:
- открытие хранилища;
- формирование структуры данных по которым ищем;
- поиск сертификата;
- если требуется, то проверка сертификата (описана в отдельном разделе);
- закрытие хранилища и освобождение структуры из пункта 2 (т. к. повсюду здесь идет работа с неуправляемой памятью .Net за нас ничего по очистке делать не будет);
В ходе поиска сертификатов есть несколько тонких моментов.
КриптоПро в Linux работает с ANSI строками, а в Windows с UTF8, поэтому:
- при подключении метода открытия хранилища в Linux необходимо параметру кода хранилища явно указать тип маршалинга [In, MarshalAs (UnmanagedType.LPStr)];
- передавая строку для поиска (например, по имени Subject) ее необходимо преобразовывать в набор байт различными кодировками;
- для всех констант криптования, у которых есть вариация по типу строки (например, CERT_FIND_SUBJECT_STR_A и CERT_FIND_SUBJECT_STR_W) в Windows необходимо выбирать *_W, а в Linux *_A;
Метод MapX509StoreFlags можно взять напрямую из исходников Microsoft без изменений, он просто формирует итоговую маску исходя из .Net флагов.
Значение по которому происходит поиск зависит от типа поиска (сверяйтесь с MSDN для CertFindCertificateInStore), в примере приведены два самых часто используемых варианта — для строкового формата (имена Subject, Issuer и проч) и бинарного (отпечаток, серийный номер).
Процесс создания сертификата из IntPtr в Windows и в Linux сильно отличается. Windows создаст сертификат простым способом:
в Linux же приходиться создавать сертификат в два этапа:
В дальнейшем нам для работы потребуется доступ к hCert, и его надо бы сохранить в объекте сертификата. В Windows его позже можно достать из свойства Handle, однако Linux преобразует структуру CERT_CONTEXT, лежащую по ссылке hCert, в ссылку на структуру x509_st (OpenSSL) и именно ее прописывает в Handle. Поэтому стоит создать наследника от X509Certificate2 (ISDP_X509Cert в примере), который сохранит у себя в отдельном поле hCert в обеих системах.
Не стоит забывать, что это ссылка на область неуправляемой памяти и ее надо освобождать после окончания работы. Т.к. в .Net 4.5 X509Certificate2 не Disposable — очистку методом CertFreeCertificateContext, надо проводить в деструкторе.
Формирование подписи
При работе с ГОСТовыми сертификатами почти всегда используются отцепленные подписи с одним подписантом. Для того чтобы создать такую подпись требуется довольно простой блок кода:
В ходе работы метода формируется структура с параметрами и вызывается метод подписания. Структура параметров может позволять сохранить в подписи сертификаты для формирования полной цепочки (поля cMsgCert и rgpMsgCert, первый хранит количество сертификатов, второй список ссылок на структуры этих сертификатов).
Метод подписания может получать один или несколько документов для одновременного подписания одной подписью. Это, кстати, не противоречит 63 ФЗ и бывает очень удобно, т. к. пользователь вряд ли обрадуется необходимости несколько раз нажимать на кнопку «подписать».
Основной странностью данного метода является то, что он не работает в режиме двух вызовов, характерного для большинства библиотечных методов, работающих с большими блоками памяти (первый с null — выдает необходимую длину буфера, второй заполняет буфер). Поэтому необходимо создать большой буфер, а затем укоротить его по реальной длине.
Единственной серьезной проблемой является поиск OID алгоритма хэширования (Digest) используемый при подписании — в явном виде его нет в сертификате (там есть только алгоритм самой подписи). И если в Windows его можно указать пустой строкой — он подцепится автоматически, но Linux откажется подписывать если алгоритм не тот.
Но тут есть хитрость — в информации об алгоритме подписи (структура CRYPT_OID_INFO) в pszOID храниться OID подписи, а в Algid — храниться идентификатор алгоритма хэширования. А преобразовать Algid в OID уже дело техники:
Внимательно прочитав код можно удивится, что идентификатор алгоритма получается простым способом (CertOIDToAlgId) а Oid по нему — сложным (CryptFindOIDInfo). Логично было бы предположить использование либо оба сложных, либо оба простых способа, и в Linux оба варианта успешно работают. Однако в Windows сложный вариант получения идентификатора и простой получения OID работает нестабильно, поэтому стабильным решением будет вот такой странный гибрид.
Проверка подписи
Проверка подписи происходит в два этапа, в начале проверяется сама подпись, а затем проверяется сертификат, которым она была сформирована (цепочка, дата подписания и проч).
Так же как и при подписании необходимо указать набор подписываемых данных, параметры подписи и саму подпись:
Для удобства процесс формирования структуры с параметрами вынесен в отдельный метод (GetStdSignVerifyPar). После чего проверяется сама подпись и извлекается первый подписант (по хорошему надо было бы извлечь всех, но подпись содержащая несколько подписантов это все таки экзотика).
После извлечения сертификата подписанта преобразуем его в наш класс и проверяем (если это указано в параметрах метода). Для проверки используется дата подписания первого подписанта (см. раздел извлечение информации из подписи, и раздел проверка сертификата).
Извлечение информация из подписи
Часто в системах работающих с криптографией требуется печатное представление подписи. В каждом случае оно разное, поэтому лучше сформировать класс информации о подписи, который будет содержать информацию в удобном для использования виде и уже с его помощью обеспечивать печатное представление. В .Net такой класс есть — SignedCms, однако его аналог в mono c подписями КритоПро, во первых отказывается работать, во вторых содержит модификатор sealed и в третьих почти все свойства у него закрыты на запись, поэтому придется формировать свой аналог.
Сама по себе подпись содержит два основных элемента — список сертификатов и список подписантов. Список сертификатов может быть пустой, а может содержать в себе все сертификаты для проверки, включая полные цепочки. Список же подписантов указывает на кол-во реальных подписей. Связь между ними осуществляется по серийному номеру и издателю (Issuer). Теоретически в одной подписи может быть два сертификата от разных издателей с одним серийным номером, но на практике этим можно пренебречь и искать только по серийному номеру.
Чтение подписи происходит следующим образом:
Разбор подписи происходит в несколько этапов, вначале формируется структура сообщения (CryptMsgOpenToDecode), затем в нее вносятся реальные данные подписи (CryptMsgUpdate). Остается проверить что это реально подпись и получить сначала список сертификатов, а потом список подписантов. Список сертификатов извлекается последовательно :
Сначала определятся количество сертификатов из параметра CMSG_CERT_COUNT_PARAM, а затем последовательно извлекается информация о каждом сертификате. Завершает процесс создания формирование контекста сертификата и на его основе самого сертификата.
Извлечение данных подписанта сложнее. В них содержится указание на сертификат и список параметров подписи (например, дата подписания). Процесс извлечения данных выглядит следующим образом:
В ходе него сначала определяется размер структуры подписанта, а затем извлекается и сама структура CMSG_SIGNER_INFO. В ней легко найти серийный номер сертификата и по нему найти нужный сертификат в ранее извлеченном списке. Обратите внимание, что серийный номер содержится в обратном порядке.
После извлечения сертификата необходимо определить параметры подписи, самая важная из которых — дата подписания (даже если это не верифицированная сервером штампа даты времени, для отображения она очень важна).
Атрибуты представляют из себя вложенный справочник вида Oid – список значений (по сути это разобранная структура ASN.1). Пройдя по первому уровню формируем вложенный список:
Ключевой особенностью данного процесса является правильный подбор наследника Pkcs9AttributeObject. Проблема в том, что стандартный способ создания в mono не работает и приходится формировать выбор класса прямо в коде. К тому же из основных типов Mono на данный момент позволяет формировать только дату.
Обернув представленные выше методы в два класса — информация о подписи и информация о подписанте — получаем аналог SignedCms, из которой при формировании печатного вида извлекаем данные.
Шифрование
Процесс шифрования во многом аналогичен процессу подписания, он довольно прост, и основная проблема так же состоит в определении алгоритма. В отличии от подписи шифрование чаще всего используются сцепленное в адрес одного или сразу нескольких адресатов (например, шифруют еще и в адрес себя, чтобы была возможность прочитать сообщение своим ключом).
Процесс шифрования происходит в три этапа — заполнение параметров, определение длины и наконец шифрование. Зашифрованные данные могут быть большие, вероятно, поэтому метод поддерживает режим двух вызовов.
В примере шифруется в адрес одного адресата, но путем добавления дополнительных сертификатов в массив и установке общего количества в параметры метода, можно увеличить число адресатов.
А вот с алгоритмом опять проблемы. В сертификате нет ни его, ни даже косвенных значений по которым его можно было бы определить (как удалось с алгоритмом подписи). Поэтому придется извлекать список поддерживаемых алгоритмов из провайдера:
В примере извлекается контекст закрытого ключа и по нему происходит поиск по алгоритмам. Но в этом списке находятся все алгоритмы (обмена ключей, хэширования, подписи, шифрования и проч.), поэтому надо отфильтровать только алгоритмы шифрования. Пытаемся по каждому извлечь информацию ограничившись группой алгоритмов шифрования (UCConsts.CRYPT_ENCRYPT_ALG_OID_GROUP_ID). И если информация найдена — значит это наш алгоритм.
В случае если таких алгоритмов больше чем один можно так же фильтровать по размеру (опираясь на размер алгоритма хэширования).
Дешифрование
Для того, чтобы дешифровать данные, на локальной машине в личных сертификатах пользователя или компьютера должен быть сертификат одного из адресатов. И к нему должен быть привязан закрытый ключ. Процесс проходит по уже привычному сценарию — список параметров, определение длины и сам процесс дешифрования:
При установке параметров указывается хранилище, из которых система будет пытаться извлечь подходящий сертификат с ключом. В результате работы система выдаст дешифрованные данные и сертификат, который был использован (в Linux сертификат всегда возвращается пустой).
Проверка сертификата
Сертификат это не только открытый ключ, но еще и набор разной информации о его владельце, о том, кто его выдал и о наборе действий, которые с его помощью можно делать. Так же у сертификата есть период действия и возможность отзыва, в случае компрометации. Чаще всего под проверкой сертификата подразумевается следующее:
- целостность цепочки (сертификат издателя, сертификат издателя сертификата издателя, и т. п.);
- сертификат корневого издателя — должен быть в хранилище доверенных корневых центров;
- период действия всех сертификатов — момент использования сертификата должен быть в границах этого периода;
- каждый из сертификатов в цепочке, кроме корневого, должен отсутствовать в списке отозванных у своего издателя (CRL);
По хорошему надо еще проверять и права подписи, но в реальной жизни это делается редко.
Как уже понятно из введения, проверка сертификата на валидность, одна из самых сложных задач. Именно поэтому в библиотеке масса методов для реализации каждого из пунктов в отдельности. Поэтому, для упрощения обратимся к исходникам .Net для метода X509Certificate2.Verify() и возьмем их за основу.
- сформировать цепочку сертификатов вплоть до корневого;
- проверить каждый из сертификатов в ней (на отзыв, время и проч.);
Такая проверка должна осуществляться перед подписанием и шифрованием на текущую дату, и в момент проверки подписи на дату подписания. Сам метод проверки небольшой:
Сначала формируется цепочка методом BuildChain, а затем она проверяется. В ходе формирования цепочки формируется структура параметров, дата проверки и флаги проверки:
Это сильно упрощенный вариант формирования цепочки по сравнению с тем, как ее формирует Microsoft. Структуры hCertPolicy и hAppPolicy можно наполнить OID-ами, отображающими права на действия, которые необходимы в проверяемом сертификате. Но в примере, будем считать, что их мы не проверяем.
Так же можно в параметры построения цепочки добавить дополнительное хранилище сертификатов (например, извлеченное из подписи).
Метод MapRevocationFlags — можно взять напрямую из исходников .Net без изменений —он просто формирует uint по набору передаваемых флагов.
Заключение
Набор реализованных методов работы с криптографией был подвергнут нагрузочному тестированию по схеме цикла полной работы:
- ожидание 10 мс;
- извлечение сертификата;
- подписание byte[] <1, 2, 3, 4, 5>;
- проверка полученной подписи;
- извлечение параметров подписи;
- шифрование byte[] <1, 2, 3, 4, 5>;
- дешифрование полученных данных;
Данный цикл был запущен в Windows и в Linux в 1-ом, 10-и и 50-и потоках, чтобы проверить работу в Linux сразу в нескольких потоках. Приложение в Linux работало стабильно в течении какого-то времени во много-поточном режиме (и чем больше потоков, тем меньше по времени), а затем «вставало» наглухо. Что свидетельствует о наличии взаимной блокировки (deadlock-е) в библиотеке (при нарушении работы с потоками связанных с разделяемым доступом обычно происходит падение с «Access Violation»).
По этой причине для обеспечения стабильности работы все методы класса UCryptoAPI стоит обрамить критической секцией. Для этого добавляем поле fpCPSection типа object после чего в каждый вызов добавляем следующую конструкцию:
Это замедляет работу, поэтому желающие могут обрамлять критической секцией только вызов Linux- варианта.
Porteus
Установка и настройка КриптоПро CSP в Porteus Linux
Moderator: Blaze
Установка и настройка КриптоПро CSP в Porteus Linux
Post #1 by Blaze » 16 Sep 2017, 09:46
Скачиваем и распаковываем под root-ом мой скрипт cprocsp.tar.bz2 в директории /tmp
Вручную в браузере скачиваем архив с сайта КриптоПро CSP с rpm пакетами linux-ia32.tgz или linux-amd64.tgz, в зависимости от архитектуры ПК
ссылка на загрузку https://www.cryptopro.ru/products/csp/downloads
скопируйте данный архив(ы) в /tmp
Затем настраиваем КриптоПро CSP в Porteus Linux согласно этой инструкции
Готовые xzm модули с КриптоПро CSP для архитектур i586 и x86_64
Установка переменных окружения.
Чтобы каждый раз не вводить полный путь к утилитам КриптоПро CSP выполните команды от root пользователя:
Создание необходимых привязок и кэша для необходимых динамических библиотек.
Подключаем библиотеки КриптоПро CSP. Для этого в терминале выполните команды от root пользователя:
Установка корневых и промежуточных CA сертификатов.
Что бы в ГОСТ браузерах не было ошибки
Проверка версии и лицензии КриптоПро CSP.
Для проверки версии КриптоПро CSP выполните:
- временная лицензия:
Управление контейнерами.
Создание контейнера. Создадим контейнер с именем test в локальном ридере HDIMAGE.
При установленном пакете cprocsp-rdr-gui-gtk будет показано графическое окно, где предложат двигать курсором мыши
После показа окна будет предложено указать пароль на контейнер (можно указать пустой, тогда пароль запрашиваться не будет) и снова предложат двигать курсором мыши.
Примечание: Если такой пакет не установлен, будет предложено ввести любые символы с клавиатуры
Работа с сертификатами.
- личные сертификаты (ставятся в хранилище umy, где u = User, my — имя хранилища) — как правило для них есть закрытый ключ (и они требуют особой установки, чтобы в хранилище появилась ссылка на этот закрытый ключ). В результате с их использованием можно, например, подписать файл.
- корневые сертификаты — краеугольнй камень безопасности, так как цепочки доверия строятся от них, то их надо добавлять в хранилища осознанно и внимательно (ставятся в uroot, также администратор может поставить их в mroot, где m = Machine, такие сертификаты будут видны в read only в root-хранилищах всех пользователей)
- промежуточные сертификаты — появляются, когда есть промежуточные УЦ (головной -> промежуточный -> пользовательский). Прямое доверие к ним не требуется (ставятся в uca, также администратор может поставить их в mca). В это же хранилище ставятся CRL-и. Обычно точки получения промежуточных сертификатов и CRL-ей правильно указаны в пользовательских сертификатах, поэтому они автоматом выкачиваются и попадают в хранилище ucache. В общем про них можно ничего особо не знать и ничего не делать.
Из под учетной записи пользователя guest промежуточные сертификаты устанавливать в uca, из под учетной записи администратора root ставить в mca. - сертификаты партнёров по общению, чтобы проверять их подписи и зашифровывать для них сообщения. Ставятся либо в umy (это беспорядок, но популярный), либо в uAddressBook
- Подробная инструкция по утилите сertmgr .
- Руководство по использованию cryptcp
после чего ввести цифру 1 для подтверждения.
Удалить корневой сертификат под номером 1
Экспорт сертификатов на другую машину
Закрытые ключи к сертификатам находятся тут: /var/opt/cprocsp/keys.
Поэтому эти ключи переносятся просто: создаем архив и переносим на нужную машину в тот же каталог.


Так же, с его помощью, можно установить сертификат из токена в хранилище uMy.
Создание запроса и получение сертификата в УЦ.
- DN (cn=Test User,e=ca@porteus.org)
- имя контейнера (в локальном хранилище hdimage: \\.\HDIMAGE\test)
- имя файла запроса (test.req)
Показать содержимое запроса:
- Откройте в браузере ссылку http://www.cryptopro.ru/certsrv (тестовый удостоверяющий центр КриптоПро).
- Нажмите «Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64».
- Вставьте в поле «Base-64-шифрованный запрос сертификата» содержимое файла test.req и нажмите кнопку «Выдать».
- Сохраните файл по ссылке «Загрузить цепочку сертификатов» (по умолчанию предлагается имя certnew.p7b)
нажмите 1
Установите сертификат клиента (введите пароль на контейнер \\.\HDIMAGE\test при запросе):
В параметре -dn указываются данные, которые будут хранится в поле Subject сертификата.
В параметре -hashalg указывается алгоритм хэширования. В случае примера использовался OID 1.2.643.7.1.1.2.2 — ГОСТ Р 34.11-12 с длиной 256
-nokeygen — использовать существующие ключи из указанного контейнера;
-both* — создать/использовать оба типа ключей;
-ku* — использовать контейнер пользователя (CURRENT_USER);
Созданный запрос будет сохранен в файле cert.req. Эти данные нужны для получения сертификата в удостоверяющем центре.
Для примера можно воспользоваться тестовым удостоверяющим центром КриптоПро . Нам нужен пункт » Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64 «. На следующей странице в поле «Сохраненный запрос» вставляем содержимое файла cert.req и нажимаем кнопку «Выдать».
После чего следует загрузить сертификат и цепочку сертификатов: 
Для установки полученного личного сертификата от тестового УЦ, следует воспользоваться командой:
Как скопировать ЭЦП на флешку с компьютера или другого носителя с ЭЦП?
Некоторым пользователям иногда требуется скопировать ЭЦП на флешку. Например, перенести с одного компьютера на другой или из одной флешки с ЭЦП сделать две флешки. Прочитав нашу инструкцию, вы узнаете, как просто скопировать ЭЦП на флешку, используя функции программы КриптоПро CSP. Если самостоятельно скопировать ЭЦП не получится, обратитесь к нашим компьютерным мастерам. Мы удалённо подключимся к вашему устройству, поможем скопировать ЭЦП и настроим рабочее место.
Инструкция о том, как скопировать ЭЦП на флешку
Как открыть КриптоПро CSP? 2 способа
Наша статья для тех, у кого возникли трудности на начальном этапе.
- Перейдите во вкладку «Сервис».

- В открывшемся окне «Копирование контейнера закрытого ключа» нажмите кнопку «Обзор» или «По сертификату».

- Выберите контейнер с сертификатом, который вы хотите скопировать на флешку, и нажмите кнопку «ОК».

- В текстовом поле введите имя для создаваемого ключевого контейнера и нажмите кнопку «Готово».

- В открывшемся окне «Выбор ключевого носителя» выберите «Директория» и нажмите кнопку «ОК».

- При желании можете защитить доступ к ЭЦП, установив пароль для контейнера закрытого ключа в открывшемся окне «Аутентификация» и нажав кнопку «ОК».
- Контейнер закрытого ключа будет создан в системной папке на вашем устройстве, о чем сообщит уведомление об успешном копировании.
- Откройте Проводник и перейдите по адресу: C:\Users\имя вашего пользователя\AppData\Local\Crypto Pro
Обратите внимание, папка «AppData» является скрытой и вам может потребоваться сделать ее видимой, чтобы получить доступ к контейнеру закрытого ключа по указанному адресу.
- По указанному адресу вы найдете папку с трудно читаемым названием, в которой будет 6 файлов: header.key, masks.key, masks2.key, name.key, primary.key, primary2.key. Если в папке «Crypto Pro» много папок с автоматизированными наименованиями, выберите ту, которая создана последней.

- Скопируйте папку и вставьте её на заранее подготовленную флешку. Желательно, чтобы флешка была пустая (отформатированная в NTFS или FAT32). Для копирования ЭЦП вы можете воспользоваться функцией «Отправить», нажав правой кнопкой мыши по папке и выбрав соответствующий элемент контекстного меню, а затем носитель для будущего размещения ЭЦП.

- Поздравляем! Теперь вы знаете, как скопировать ЭЦП на флешку.
Как проверить, что ЭЦП действительно скопирована на флешку?
- Запустите «Инструменты КриптоПро».
- Перейдите в раздел «Контейнеры».
- В столбце «Считыватель» вы увидите несколько контейнеров с ЭЦП:
- FAT12_E — это ваша флешка с только что записанной ЭЦП.
- HDIMAGE — это папка с ЭЦП, сохранённая локально в директории (если после копирования вы не удаляли папку с ЭЦП).

Если вы записали ЭЦП на флешку, а считыватель «FAT12_E» не видите, значит ЭЦП записалась некорректно или не записалась вовсе. Убедитесь, что контейнер с ЭЦП «HDIMAGE» имеется в столбце «Считыватель» и повторите копирование ЭЦП на флешку повторно.
Получилось ли у вас скопировать ЭЦП на флешку?
Расскажите в комментариях