- Что такое ключевой контейнер? зачем нужен пароль на контейнер?
- Почему не работает команда csptest -keycopy -src cont ‘\.flashqwerty’ -d cont ‘\.hdimageqwerty’ ?
- Csptest описание команд windows
- Rosa crypto tool
- Trusted esign
- Windows блокирует запуск скрипта¶
- Алгоритм работы¶
- Запуск скриптов¶
- Как в linux/unix установить сертификаты?
- Как посмотреть список закрытых ключей?
- Как проверить, работоспособен ли контейнер с закрытыми ключами?
- Как сделать новые закрытые ключи?
- Как скопировать ключи с дискеты/флешки на hdimage?
- Настройка «криптопро» csp
- Настройка работы с рутокен эцп 2.0
- Подпись средствами «криптопро csp»
- Получаем тестовый сертификат
- Резюме
- Системные требования¶
- Утилита cert-install.ps1¶
- Утилиты export_keys.ps1 и import_keys.ps1¶
- Вывод скриптов¶
Что такое ключевой контейнер? зачем нужен пароль на контейнер?
Ключевые контейнеры – это способ хранения закрытых ключей, реализованный в нашем продукте. Их физическое представление зависит от типа ключевого носителя (на флешке, дискете, жестком диске это директория в которой хранится набор файлов с ключевой информацией; в случае со смарт-картами – файлы в защищенной памяти смарт-карты, в случае с реестром – раздел реестра, содержащий некоторые параметры). Пароль на контейнер имеет разное значение для смарт-карт и для носителей, не являющихся смарт-картами.
Почему не работает команда csptest -keycopy -src cont ‘\.flashqwerty’ -d cont ‘\.hdimageqwerty’ ?
Проблема может быть в том, что нельзя создавать два контейнера с одинаковым именем.
Попробуйте назвать копию как-нибудь иначе, например:
csptest -keycopy -src cont ‘\.FLASHqwerty’ -d cont ‘\.HDIMAGEqwerty1’
Csptest описание команд windows
Утилита сsptest.exe , входит в состав программы КриптоПро и позволяет выполнять операции через командную строку. Это дает возможность автоматизировать выполняемые действия с помощью скриптов.
Далее будут рассмотрены основные команды утилиты сsptest.exe и скрипты, позволяющие выполнить массовое копирование контейнеров закрытых ключей и установку сертификатов.
Для удобства, перед выполнением команд перейдите в папку C:Program FilesCrypto ProCSP , выполнив в командной строке команду: cd «C:Program FilesCrypto ProCSP»
Справка по csptest.exe
Посмотреть все параметры утилиты сsptest.exe :
Основные команды csptest.exe
Просмотр списка контейнеров закрытых ключей
Список контейнеров выводится с помощью параметра -keyset :
Для просмотра списка контейнеров на съемных носителях используется параметр -machinekeys . В данном случае не будут показаны ключи, установленные в реестр:
Пример вывода команды:
Флешки и дискеты обозначаются как FAT12_x , где и x буква, присвоенная съемному носителю.
Носитель будет отображен данной командной только в том случае, если на нем есть контейнеры.
Копирование контейнера осуществляется с помощью параметра -keycopy :
- -src — имя контейнера. Имена контейнеров уникальны, поэтому можно не указывать путь к носителю, КриптоПро сама найдет путь к контейнеру.
- -dest — имя скопированного контейнера, оно должно отличаться от исходного имени. Так же можно указать путь к контейнеру, например, если указать -dest «\.FAT12_H2022ZAO_3» , то контейнер будет скопирован на флэшку. Если не указать путь к носителю, а просто задать название контейнеру, то крипто про выведет графический диалог выбора носителя для копирования.
- -pinsrc — пароль от исходного контейнера, если пинкода нет, то данный параметр можно не указывать.
- -pindest — пароль на скопированный контейнер. Чтобы подавить графический диалог установки пароля при автоматическом копировании контейнеров, можно указать пустой пароль, выполнив -pindest=»»
Например, рассмотрим копирование контейнера с рутокена в реестр:
Аналогичная ситуация с рутокенами, в данном случае программа не различает понятия пароль и пин-код. Т.е. чтобы скопировать контейнер с рутокена на носитель можно команде -pinsrc присвоить стандарнтный пин-код от Рутокена 12345678 . В таком случае не будет выводиться запрос на ввод пин-кода Рутокена.
Копирование на Рутокен
К сожалению, копирование контейнера на Рутокен работает не совсем гладко. Если параметру -dest указать значение \.Aktiv Co. ruToken 0Имя_контейнера , то будет выведено пустое окно КриптоПро для выбора ключевого носителя.
В данном случае лучше передать параметру -dest просто название контейнера, без указания пути к носителю, но тогда при копировании каждого контейнера будет появляться уже не пустое окно КриптоПро для выбора ключевого носителя, в котором надо будет вручную выбирать нужный Рутокен.
С другой стороны, такое поведения достаточно удобно при копировании большого числа контейнеров на разные Рутокены. Можно контролировать заполненность носителя.
Установка сертификатов производится параметром -cinstall :
Смена пароля на контейнер (снятие паролей с контейнера)
Чтобы удалить пароли с контейнеров, можно в параметр -change передать «» .
Автоматизация работы с сертификатами и контейнерами
Графические интерфейсы очень неудобны для работы с большим количеством ключей. Утилиты командной строки позволяют автоматизировать практически все задачи. В разделе :ref:`cert-utilities` приводится ряд утилит, позволяющих автоматизировать работу с сертификатами и контейнерами.
Rosa crypto tool
Как следует из названия, это утилита для работы с электронной подписью и шифрованием для дистрибутива ROSA Linux. В данный момент утилита доступна в репозиториях Rosa Linux и Alt Linux.
Эта утилита разрабатывается одним человеком – Михаилом Вознесенским. У нее простой, но удобный интерфейс. На данный момент утилита находится в активной разработке – с ноября 2022 года мне удалось протестировать три версии. Последняя версия, доступная на момент написание статьи — 0.2.2.
Что внутри? Утилита написана на Python с использованием PyQt4 для графического интерфейса.
Установить ее можно, использовав «Управление программами» в Rosa Linux.
Вставляем токен и запускаем утилиту.
Видим, что токен определился успешно и был найден наш сертификат.
Интерфейс программы настолько прост, что описывать и показывать в статье все его функции не имеет смысла. Попробуем только подписать файл.
Выбираем файл и жмем “Подписать файл”. Получаем вот такое предупреждение.
Нажимаем «OK» и получаем информацию о том, что файл был подписан успешно.
Основное достоинство этой утилиты в том, что она совершенно бесплатная, в отличии нашего следующего продукта.
По сравнению с использованием «КриптоПро CSP» из консоли:
На порядок проще использовать;— Отсутствуют различные параметры подписи.
Исходный код программы доступен в публичном репозитории на ABF:abf.io/uxteam/rosa-crypto-tool-develСистема контроля версий, которую использует «НТЦ ИТ РОСА», интегрирована в сборочную среду и базируется на Git. Можно вполне использовать любой клиент git.
Надеюсь, разработчики других отечественных дистрибутивов Linux, таких как Astra Linux, GosLinux и другие добавят в свои дистрибутивы пакеты с rosa-crypto-tool.
Trusted esign
Второй продукт, про который мы поговорим, это Trusted eSign от компании “Цифровые технологии”. Она известна на российском рынке ИБ как разработчик средства по работе с подписью и шифрованием для ОС Windows – «КриптоАРМ».
Главное, не путать этот продукт с Trusted.eSign – web-сервисом по работе с подписью этой же компании.
Windows блокирует запуск скрипта¶
Система “безопасности” Windows может заблокировать выполнение скриптов. В такой ситуации требуется принудительно разрешить их выполнение.
Если при попытке выполнить сценарий появляется сообщение Не удается загрузить файл , так как выполнение скриптов запрещено для данной системы. Введите “get-help about_signing” для получения дополнительных сведений, достаточно подтвердить свое согласие введя Y .
Также можно воспользоваться средой разработки Windows PowerShell ISE. Подробнее смотрите:
Алгоритм работы¶
- Перенесети папку с утилитами на первый компьютер абонента, с которого надо скопировать контейнеры;
- Запустите скрипт export_keys.ps1 и дождитесь его успешного выполнения. При этом в папке со скриптами появится экспортированная ветка реестра;
- Перенесите папку со скрипом и экспортированным файлом на второй компьютер;
- Запустите скрипт import_keys.ps1 и дождитесь его успешного выполнения;
- Просмотрите вывод скрипта, на наличе проблем и проверьте вход в сервисы СКБ Контур.
При использовании скриптов не требуется устанавливать сертификаты через КриптоПро. Однако, вы можете проверить через КриптоПро успешное выполнение сценариев.
Скрипт export_keys.ps1 сохраняет ветку в файле ps_keys.reg на рабочем столе. Скрипт import_keys.ps1 подхватывает файл ps_keys.reg также с рабочего стола и резудьтат обработки сохраняет в файле ps_keys_out.reg .
Файл ps_keys.reg не будет подхвачен скриптом import_keys.ps1 из других папок.
Запуск скриптов¶
Выполнять скрипты рекомендуется через среду разработки Windows PowerShell ISE. Чтобы не менять настройки безопасности на компьютерах абонентов:
- Откройте скрипт в Windows PowerShell ISE;
- Выделите код скрипта, нажмите F8 и скрипт будет выполнен.
Если в процессе выполнения скрипта возникли ошибки или его не удалось запустить, смотрите раздел Решение проблем.
Как в linux/unix установить сертификаты?
Основной утилитой для работы с сертификатами является certmgr (лежит в /opt/cprocsp/bin/ ). К ней есть man: man 8 certmgr
Установка корневого сертификата: certmgr -inst -store root -file
Установка личного сертификата: certmgr -inst -file -cont
Установка стороннего сертификата: certmgr -inst -file
Как посмотреть список закрытых ключей?
Список контейнеров с закрытыми ключами можно посмотреть утилитой csptest. Она находится в директории /opt/cprocsp/bin/
Перечисление контейнеров пользователя: csptest -keyset -enum_cont -verifycontext -fqcn
Перечисление контейнеров компьютера: csptest -keyset -enum_cont -verifycontext -fqcn -machinekeys
В полученном списке имена контейнеров будут представлены в том виде, в котором их воспринимают все бинарные утилиты, входящие в дистрибутив CSP (\. ).
Как проверить, работоспособен ли контейнер с закрытыми ключами?
Открыть(проверить) контейнер можно утилитой csptest. Она находится в директории /opt/cprocsp/bin/ :
Открыть(проверить) контейнер пользователя: csptest -keyset -check -cont ‘\.имя считывателяимя контейнера’
Открыть(проверить) контейнер компьютера: csptest -keyset -check -cont ‘\.имя считывателяимя контейнера’ -machinekeyset
где имя считывателя: HDIMAGE, если используете жесткий диск для хранения ключей FLASH, если используете флешку FAT12_0, если используете дискету
Как сделать новые закрытые ключи?
Обычно ключи создаются вместе с запросом на сертификат. Если Вам требуется создать ключи и запрос на сертификат, воспользуйтесь утилитой cryptcp(документация на неё входит в состав документации на CSP, см. раздел «Работа с запросами на сертификат»).
Если требуется просто сделать новые ключи, можно воспользоваться утилитой csptest. Она находится в директории /opt/cprocsp/bin/ .
Создание контейнера пользователя: csptest -keyset -newkeyset -cont ‘\.имя считывателяимя контейнера’
Создание контейнера компьютера:
Как скопировать ключи с дискеты/флешки на hdimage?
Скопируйте ключи(директорию с именем в формате 8.3) из корня дискеты или флешки в директорию /var/opt/cprocsp/keys/имя_пользователя
При этом необходимо проследить чтобы: — владельцем файлов был пользователь, в диретории с именем которого расположен контейнер(от его имени будет осуществляться работа с ключами); — чтобы на директорию с ключами были выставлены права, разрешаюшие владельцу всё, остальным ничего; — чтобы на файлы были выставлены права, разершающие владельцу по крайней мере чтение и запись, остальным ничего.
Настройка «криптопро» csp
Несмотря на то, что есть несколько неплохих статей по настройке «КриптоПро CSP» под Linux (например,
или
), я опишу здесь свой вариант. Основная причина в том, что большинство инструкций написаны для «Крипто Про CSP» версии 3.x. А современная версия «КриптоПро CSP» 4.0 не является 100% совместимой с 3.x. Дополнительная причина – всегда приятно иметь полную инструкцию по настройке в одном месте, а не переключаться с одного окна на другое.
Приступаем к настройке.
Настройка работы с рутокен эцп 2.0
Сделаем небольшое отступление. Для работы с электронной подписью и шифрованием нам не обойтись без ключевых пар и сертификатов. Надежное хранение закрытых ключей – один из основных факторов безопасности. А более надежных средств хранения, чем токен или смарт-карта, человечество пока не придумало.
Для работы с токенами в ОС Linux есть масса различных средств и драйверов. Для описания всех этих средств понадобится отдельная статья. Поэтому я не буду подробно описывать, как это работает, и почему нам нужны именно эти пакеты.
Устанавливаем пакеты для работы с Рутокен ЭЦП 2.0:
apt-get install libpcsclite1 pcscd libccid
Нам также необходимо установить пакеты КриптоПро CSP для поддержки работы с токенами:
dpkg -i ./cprocsp-rdr-gui-gtk-64_4.0.0-4_amd64.deb ./cprocsp-rdr-rutoken-64_4.0.0-4_amd64.deb ./cprocsp-rdr-pcsc-64_4.0.0-4_amd64.deb ./lsb-cprocsp-pkcs11-64_4.0.0-4_amd64.deb
Подпись средствами «криптопро csp»
В составе «КриптоПро CSP» есть утилита csptestf, позволяющая выполнять различные криптографические операции. Как я уже писал выше, у этой утилиты есть 2 недостатка:
Подписать можно с помощью команды:
csptestf –sfsign –sign –in <имя файла> -out <имя файла> -my ‘Trusted eSign Test’ –detached –alg GOST94_256
Здесь,
my — параметр, в котором надо указать часть Common Name сертификата для подписи;
detached — позволяет создать открепленную подпись;
alg GOST94_256 — задает алгоритм хэширования, который будет использоваться при создании подписи.
Более подробную информацию о возможных параметрах вы можете получить, выполнив команду:
csptestf –sfsign
Такой интерфейс отлично подходит для подготовленного пользователя или для автоматизации операций в скриптах.
Поговорим теперь об утилитах, которые облегчают жизнь обычным пользователям при работе с подписью и шифрованием в Linux.
Получаем тестовый сертификат
Перед тем как перейти непосредственно к работе с подписью, надо сгенерировать ключевую пару и создать сертификат электронной подписи. Если у вас уже есть Рутокен с контейнером «КриптоПро», то эту часть можно смело пропустить.
Резюме
Подведем итог. В конце 2022 – начале 2022 года наметился неплохой прогресс в средствах по работе с электронной подписью под Linux. Информационная безопасность начинает поворачиваться к пользователю лицом, и с каждым годом требуется все меньше действий для такого простого действия, как подписать или зашифровать файл с использованием отечественных алгоритмов.
Хочется дополнительно отметить такое развитие отечественных продуктов, учитывая современный тренд на замену Windows на Linux в государственных и муниципальных организациях. В рамках этого тренда становится актуальным использование средств криптографической защиты информации под Linux.
Такое развитие не может не радовать, особенно когда это происходит под Linux.
Системные требования¶
Скрипты, перечисленные в этом разделе, написаны на Windows PowerShell.
Windows PowerShell — расширяемое средство автоматизации от Microsoft, состоящее из оболочки с интерфейсом командной строки и сопутствующего языка сценариев. Windows PowerShell 2.0 был выпущен в составе Windows 7, Windows 8 и Windows Server 2008 R2, а также Windows Server 2022 R2, как неотъемлемый компонент системы.
Утилита cert-install.ps1¶
cert-install.ps1 – утилита для массовой установки сертификатов.
Позволяет массово устанавливать сертификаты с носителей. При необходимости можно установить сертификаты только с определенного носителя.
Утилиты export_keys.ps1 и import_keys.ps1¶
Две утилиты, используеющиеся совместно.
- автоматически определяет разрядность системы;
- автоматически определяет SID пользователя;
- экспортирует ветку в папку со скриптом.
- автоматически определяет разрядность системы;
- автоматически определяет SID пользователя;
- изменяет ветку реестра в экспортированном файле;
- импортирует файл с контейнерами;
- автоматически устанавливает сертификаты, перенесенных контейнеров.
Утилиты целесообразно использовать в случае, когда требуется перенести большое количество контейнеров из реестра одного компьютера, в реестр другого.
Вывод скриптов¶
Скрипты подробно комментируют процесс своего выполнения, поэтому внимательно смотрите то, что они выводят в командной строке.
Пример успешного вывода export_keys.ps1 :
Пример успешного вывода import_keys.ps1 :