Как узнать имя контейнера закрытого ключа криптопро
Проблема может быть в том, что нельзя создавать два контейнера с одинаковым именем.
Попробуйте назвать копию как-нибудь иначе, например:
csptest -keycopy -src cont ‘\\.\FLASH\qwerty’ -d cont ‘\\.\HDIMAGE\qwerty1’
Как сделать новые закрытые ключи?
- Работа с ключами и сертификатами
- Linux/Unix
Публикация: 14 Январь 2011 — 19:38
Обычно ключи создаются вместе с запросом на сертификат. Если Вам требуется создать ключи и запрос на сертификат, воспользуйтесь утилитой cryptcp(документация на неё входит в состав документации на CSP, см. раздел «Работа с запросами на сертификат»).
Если требуется просто сделать новые ключи, можно воспользоваться утилитой csptest. Она находится в директории /opt/cprocsp/bin/.
Создание контейнера пользователя:
csptest -keyset -newkeyset -cont ‘\\.\имя считывателя\имя контейнера’
Создание контейнера компьютера:
Как проверить, работоспособен ли контейнер с закрытыми ключами?
- Работа с ключами и сертификатами
- Linux/Unix
Публикация: 14 Январь 2011 — 19:33, редакция: 14.01.2011 19:39
Открыть(проверить) контейнер можно утилитой csptest. Она находится в директории /opt/cprocsp/bin/ :
Открыть(проверить) контейнер пользователя:
csptest -keyset -check -cont ‘\\.\имя считывателя\имя контейнера’
Открыть(проверить) контейнер компьютера:
csptest -keyset -check -cont ‘\\.\имя считывателя\имя контейнера’ -machinekeyset
где имя считывателя:
HDIMAGE, если используете жесткий диск для хранения ключей
FLASH, если используете флешку
FAT12_0, если используете дискету
Как посмотреть список закрытых ключей?
- Работа с ключами и сертификатами
- Linux/Unix
Публикация: 14 Январь 2011 — 19:30
Список контейнеров с закрытыми ключами можно посмотреть утилитой csptest. Она находится в директории /opt/cprocsp/bin/
Перечисление контейнеров пользователя:
csptest -keyset -enum_cont -verifycontext -fqcn
Перечисление контейнеров компьютера:
csptest -keyset -enum_cont -verifycontext -fqcn -machinekeys
В полученном списке имена контейнеров будут представлены в том виде, в котором их воспринимают все бинарные утилиты, входящие в дистрибутив CSP (\\.\\).
Как в Linux/Unix установить сертификаты?
- Работа с ключами и сертификатами
- Linux/Unix
Публикация: 14 Январь 2011 — 19:25
Основной утилитой для работы с сертификатами является certmgr (лежит в /opt/cprocsp/bin/). К ней есть man:
man 8 certmgr
Установка корневого сертификата:
certmgr -inst -store root -file
Установка личного сертификата:
certmgr -inst -file -cont
Установка стороннего сертификата:
certmgr -inst -file
Как скопировать ключи с дискеты/флешки на HDIMAGE?
- Работа с ключами и сертификатами
- Linux/Unix
Публикация: 14 Январь 2011 — 19:24
Скопируйте ключи(директорию с именем в формате 8.3) из корня дискеты или флешки в директорию /var/opt/cprocsp/keys/имя_пользователя
При этом необходимо проследить чтобы:
— владельцем файлов был пользователь, в диретории с именем которого расположен контейнер(от его имени будет осуществляться работа с ключами);
— чтобы на директорию с ключами были выставлены права, разрешаюшие владельцу всё, остальным ничего;
— чтобы на файлы были выставлены права, разершающие владельцу по крайней мере чтение и запись, остальным ничего.
Что такое ключевой контейнер? Зачем нужен пароль на контейнер?
- Работа с ключами и сертификатами
- Linux/Unix
Публикация: 27 Декабрь 2010 — 17:57, редакция: 30.12.2010 02:35
Ключевые контейнеры – это способ хранения закрытых ключей, реализованный в нашем продукте. Их физическое представление зависит от типа ключевого носителя (на флешке, дискете, жестком диске это директория в которой хранится набор файлов с ключевой информацией; в случае со смарт-картами – файлы в защищенной памяти смарт-карты, в случае с реестром – раздел реестра, содержащий некоторые параметры). Пароль на контейнер имеет разное значение для смарт-карт и для носителей, не являющихся смарт-картами.
Как установить контейнер закрытого ключа в криптопро

Являетесь пользователем электронной подписи и хотите надежно защитить свои персональные данные? Чтобы информация ЭЦП была надежно защищена, нужно создать контейнер закрытого ключа Криптопро. Этот вопрос требует подробного рассмотрения каждого момента.
Что такое контейнер закрытого ключа Криптопро
Контейнер закрытого ключа — это хранилище авторизации ЭЦП. Метод защиты криптографического средства хранения лицензий, сертификатов, паролей и прочих личных данных.
Контейнер с ключом позволяет гарантировать сохранность и конфиденциальность информации, необходимой для активации цифрового аналога подписи.
Создание контейнера
Формирование хранилища — сложный и ответственный процесс, который требуется выполнить предельно внимательно. Самостоятельно установить контейнер можно следующим образом:
- При формировании блока хранения сведений отобразится окно, где предоставлены варианты выбора носителя. Подобная форма отображается на мониторе пользователя, когда имеется несколько устройств считывания. Если ЭЦП один, то будет выбран автоматически.

- Отобразится окно ДСЧ, кроме случаев, когда БДСЧ является аппаратной составляющей ПК.
Биологический ДСЧ позволяет выполнять генерацию начальных символов, являющихся компонентами обычного ДСЧ. Чтобы процесс формирования был успешно завершен, следует перемещать курсор мыши по экрану и нажимать кнопки на клавиатуре. - Когда БДСЧ завершит работу, система автоматически запустит диалоговое окно, где потребуется ввести пароль, обеспечивающий доступ к формируемому контейнеру.
Пользователь имеет возможность самостоятельно ввести идентификационную комбинацию, открывающую доступ к ЗК. PIN-код вводится в два поля — «новый пароль» и «подтверждение». Созданный шифр вступит в силу после нажатия на «Ок». В случае выполнения генерации чисел и букв на носитель, предусматривающий функцию внесения аппаратного пароля либо пин-кода, придется ввести данные, которые соответствуют предоставлению доступа к накопителю. - Ввод пароля в СКЗИ является далеко не единственной мерой обеспечения защищенного доступа к ЗК. Чтобы выбрать оптимальный механизм безопасности в меню создания пароля следует нажать на пункт «Подробнее». На экране отобразятся варианты мер предотвращения несанкционированного использования ключа контейнера. Способом защиты файла и предоставлением доступа только его обладателю, в случае носителя с поддержкой пароля, является пин-код.
На мониторе отобразятся параметры ввода пароля (комбинации символов в текстовом формате), мастер ключа (выполнение криптографии файла, хранимого на другом контейнере), а также раздела файлов на несколько носителей. Чтобы вернуться к выбору защитных систем следует снова нажать на «Подробнее». - Выбрав пункт «Установка нового пароля», следует понимать, что придуманный PIN станет защитным средством, устанавливаемым в соответствии с требованиями положения №3 текущей инструкции.
- Определившись с тем, что будет интегрирован мастер ключ, следует понимать, что зашифрованные данные перенесутся в иное криптографическое назначение. Выполнение мероприятия возможно после того, как введено значение хранилища или определено его местоположение при помощи кнопки «Выбрать».
Отобразится перечень доступных контейнеров. 
- Система произведет шифрование ключа на базе выбранного хранилища. Операционная система программного обеспечения открывает широкие возможности в сфере криптографии ЗК. Можно создать новый контейнер, нажав на соответствующий пункт в меню.

- При выборе значения «Раздел на несколько элементов» произойдет равномерное распределение доступа к ключу между некоторым числом носителей. Каждое из физических хранилищ является автономной базой данных с индивидуальными идентификационными сведениями в рамках рассматриваемого проекта.

- Для корректной работы системы потребуется ввести число носителей, обеспечивающих загрузку.

- Потребуется ввести общее число цифровых хранителей, между которыми распределятся объекты.

На следующем этапе произойдет формирование новых цифровых контейнеров, являющихся предметом распределения исходной информации. Сумма формируемых блоков пропорциональна значению, указанному в графе общего числа носителей:
- при формировании каждого участка нужно выбирать персональный элемент идентификации;
- когда для каждого фрагмента запрограммировано физическое местоположение, отобразится меню БДСЧ, где запустится генерация специальных последовательностей;
- система предложит ввести пароли для каждого сформированного объекта. Защитные файлы можно изменить нажатием кнопки «Подробнее»;
- окончательная настройка будет завершена после того, как каждый субъект хранения будет успешно задан.
Как прописать свой ключ
Ключ станет доступен после того, как пользователь программы сможет выполнить такие действия:
- Переход в меню «Пуск».
- Открытие папки «Крипто-Про».
- Обнаружение файла «Криптопро CSP».

- Запуск файла от имени администратора.

- Открыть вкладку «Оборудование», перейти разделу «Типы ключевых носителей» на вкладку «Типы носителей» и нажать «Настроить типы носителей…».

- Отобразится диалоговое окно управления сведениями персонализации.

- Выбираем оптимальный вариант и делаем его активным при помощи нажатия на «Добавить».
- На экране отобразится меню установки, где рекомендуется нажать «Далее».

- Выбираем подходящий пункт.

- Вводим имя выбранного носителя и продолжаем выполнение мероприятия.

- Возможно, отобразятся дополнительные идентификационные сведения. Для MPCOS/EMV актуально заполнение разметки, после чего можно продолжать инсталляцию.

- Мастер попросит нажать «Готово» для завершения выполнения требуемой операции.

В программе Криптопро можно самостоятельно создавать хранилище, распределять его на требуемое число носителей информации, а также добавлять ключи.
Благодаря подробным пошаговым инструкциям использование программного обеспечения, позволяющего пользоваться ЭЦП, становится простым и комфортным мероприятием.
Как установить контейнер закрытого ключа в КриптоПро
Контейнер закрытого ключа является важной частью системы информационной безопасности. Он обеспечивает защиту конфиденциальных данных и облегчает процесс шифрования и дешифрования информации. Установка контейнера закрытого ключа в программном обеспечении КриптоПро позволяет использовать его для создания и работы с электронно-цифровыми подписями, а также для зашифрования и расшифрования данных.
Для установки контейнера закрытого ключа в КриптоПро следуйте следующим шагам:
- Шаг 1: Откройте программу КриптоПро на вашем компьютере.
- Шаг 2: В меню программы выберите опцию «Ключи» или «Контейнеры ключей».
- Шаг 3: В открывшемся окне выберите опцию «Установить новый контейнер закрытого ключа».
- Шаг 4: Далее вам будет предложено выбрать тип контейнера ключа. Выберите подходящую опцию и нажмите «Далее».
- Шаг 5: Введите информацию о контейнере ключа, такую как название, срок действия и пароль доступа. Убедитесь, что пароль является надежным и запомните его.
- Шаг 6: Нажмите кнопку «Установить» и дождитесь завершения процесса установки контейнера закрытого ключа.
Поздравляю! Теперь вы успешно установили контейнер закрытого ключа в программе КриптоПро. Вы можете использовать его для создания электронно-цифровых подписей или для защиты своих данных с помощью шифрования. Не забывайте сохранять пароль доступа к контейнеру в надежном месте и не передавать его третьим лицам.
Заметка: Установка контейнера закрытого ключа является ответственным и важным шагом в обеспечении безопасности вашей информации. Рекомендуется обратиться к специалисту по информационной безопасности или следовать инструкциям от производителя для дополнительной информации и подробного руководства.
Выбор подходящего контейнера
Перед установкой контейнера закрытого ключа в КриптоПро необходимо выбрать подходящий контейнер. Устройства и операционные системы имеют разные типы контейнеров, поэтому необходимо правильно определиться с выбором.
Ниже приведены основные типы контейнеров и их характеристики:
- Контейнер EToken – используется для защиты закрытых ключей на смарт-картах EToken, таких как eToken PRO или Aladdin eToken. Этот тип контейнера обеспечивает высокую степень защиты ключей и их безопасное хранение.
- Контейнер Ключ-конвейер – является одним из наиболее популярных типов контейнеров в КриптоПро. Он используется для хранения закрытых ключей на защищенном диске или сетевом устройстве. Ключ-конвейер обеспечивает удобство использования и высокую степень безопасности.
- Контейнер КриптоПро CSP – это стандартный контейнер, который поддерживается операционными системами Windows и Linux. Он предоставляет возможность хранить закрытые ключи на локальном компьютере или в защищенной сети. Контейнер КриптоПро CSP предоставляет различные варианты безопасности и гибкие настройки.
- Контейнер КриптоАРМ ГОСТ – это специальный контейнер, разработанный для использования в Государственной информационной системе (ГИС). Он предоставляет высокий уровень безопасности и соответствует государственным стандартам ГОСТ.
При выборе контейнера необходимо учитывать цели и требования вашей системы, уровень безопасности, доступность и удобство использования. Лучше всего консультироваться с соответствующими специалистами или документацией программного обеспечения, чтобы определиться с наиболее подходящим типом контейнера для вашей системы.
Получение и установка КриптоПро CSP
1. Перейдите на официальный сайт КриптоПро и скачайте последнюю версию программы.
2. Запустите установочный файл и следуйте инструкциям мастера установки.
3. В процессе установки выберите компоненты, которые вы хотите установить. Обычно рекомендуется установить все компоненты, чтобы иметь полный набор функций КриптоПро CSP.
4. После завершения установки перезагрузите компьютер, чтобы изменения вступили в силу.
5. Проверьте, что КриптоПро CSP успешно установлен на вашем компьютере. Для этого откройте окно командной строки и введите команду:
| Команда | Описание |
|---|---|
| cryptcp –ver | Проверка версии установленного КриптоПро CSP |
| certmgr | Открытие утилиты управления сертификатами |
| cmdn | Переход в директорию с установленным КриптоПро CSP |
6. Если команда cryptcp –ver отобразила версию КриптоПро CSP, то установка прошла успешно. Если команда не распознается, проверьте пути к исполняемым файлам КриптоПро CSP или переустановите программу.
Теперь вы готовы использовать КриптоПро CSP для работы с цифровыми сертификатами, ключами и другими криптографическими операциями.
Создание контейнера закрытого ключа
1. Откройте утилиту КриптоПро CSP.
Для этого щелкните по значку КриптоПро на рабочем столе или в меню «Пуск».
2. Выберите опцию «Создать контейнер закрытых ключей».
В открывшемся окне выберите пункт меню «Служебные флажки» и установите флажок возле опции «Создать контейнер закрытых ключей». Нажмите «ОК».
3. Введите имя и пароль для контейнера.
В появившемся окне введите имя контейнера в поле «Имя контейнера» и придумайте пароль для доступа к закрытому ключу. Укажите опцию «Создать резервную копию контейнера» для сохранения резервной копии на диске. Нажмите «ОК».
4. Завершите создание контейнера.
После ввода имени и пароля для контейнера закрытого ключа, процесс создания контейнера будет завершен. Нажмите «Готово», чтобы закрыть окно.
5. Проверьте созданный контейнер.
Чтобы убедиться, что контейнер закрытого ключа успешно создан, откройте меню «Сертификаты» и выберите «Личные сертификаты». В списке сертификатов должен отображаться созданный контейнер с указанным именем.
Теперь вы успешно создали контейнер закрытого ключа в КриптоПро. Необходимо обеспечить безопасное хранение пароля и резервных копий контейнера, чтобы сохранить безопасность данных.
Установка контейнера в КриптоПро
Для установки контейнера закрытого ключа в программе КриптоПро, следуйте приведенным ниже шагам:
Шаг 1: Запустите программу КриптоПро и откройте вкладку «Сертификаты».
Шаг 2: Нажмите кнопку «Импорт» или выберите пункт меню «Файл» > «Импорт».

Шаг 3: В появившемся окне выберите файл контейнера закрытого ключа (.pfx или .p12) и нажмите кнопку «Открыть».

Шаг 4: Введите пароль для доступа к контейнеру и нажмите кнопку «ОК».

Шаг 5: После успешной установки контейнера в списке сертификатов появится новый сертификат с ключом.

Шаг 6: Теперь вы можете использовать контейнер для подписания документов или других операций, требующих авторизацию по ключу.
Примечание: Перед установкой контейнера закрытого ключа убедитесь, что у вас есть файл контейнера и правильный пароль для доступа к нему. В противном случае установка будет невозможна.
Проверка работоспособности контейнера
После установки контейнера закрытого ключа в КриптоПро, рекомендуется провести проверку его работоспособности. Следующие шаги помогут вам выполнить проверку:
| Шаг | Описание |
| 1 | Откройте КриптоПро CSP. |
| 2 | Выберите закладку «Информация о контейнерах». |
| 3 | В открывшемся окне вы увидите информацию о всех установленных контейнерах. |
| 4 | Найдите контейнер, который вы только что установили, в списке контейнеров. |
| 5 | Убедитесь, что статус контейнера отображается как «Работает». |
| 6 | Возможно, вам потребуется выполнить другие действия для проверки работоспособности контейнера, в зависимости от ваших конкретных требований. |
| 7 | При необходимости, вы можете обратиться за помощью к специалистам технической поддержки КриптоПро. |
Проверка работоспособности контейнера позволяет убедиться, что контейнер был успешно установлен и может быть использован для выполнения необходимых операций с цифровой подписью и шифрованием информации.
Рекомендации по сохранению контейнера
После создания контейнера закрытого ключа в КриптоПро, важно обеспечить его безопасное хранение. Вот некоторые рекомендации по сохранению контейнера:
| 1 | Создайте надежный пароль для контейнера. Пароль должен быть длинным и сложным. Избегайте использования очевидных паролей, таких как «password» или «123456». |
| 2 | Не храните пароль вместе с контейнером или на компьютере. Сохраните его в надежном месте, отдельно от самого контейнера. |
| 3 | Регулярно создавайте резервные копии контейнера. Это может помочь в случае утери или повреждения контейнера. |
| 4 | Храните резервные копии контейнера в надежном и доступном только вам месте. Рекомендуется использовать внешние носители, такие как защищенные USB-накопители или облако. |
| 5 | Избегайте передачи контейнера по электронной почте или другим незащищенным каналам связи. Лучше использовать зашифрованные каналы связи или физическую передачу через надежные средства доставки. |
Соблюдение данных рекомендаций поможет защитить ваш контейнер закрытого ключа от несанкционированного доступа и утери данных.
Установка сертификата и закрытого ключа
Мы опишем установку сертификата электронной подписи и закрытого ключа для ОС семейства Windows. В процессе настройки нам понадобятся права Администратора (поэтому нам может понадобится сисадмин, если он у вас есть).
Если вы еще не разобрались что такое Электронная подпись, то пожалуйста ознакомьтесь вот с этой инструкцией. Или если еще не получили электронную подпись, обратитесь в Удостоверяющий центр, рекомендуем СКБ-Контур.
Хорошо, предположим у вас уже есть электронная подпись (токен или флешка), но OpenSRO сообщает что ваш сертификат не установлен, такая ситуация может возникнуть, если вы решили настроить ваш второй или третий компьютер (разумеется подпись не «прирастает» только к одному компьютеру и ее можно использовать на нескольких компьютерах). Обычно первоначальная настройка осуществляется с помощью техподдержки Удостоверяющего центра, но допустим это не наш случай, итак поехали.
1. Убедитесь что КриптоПро CSP 4 установлен на вашем компьютере
Для этого зайдите в меню Пуск КРИПТО-ПРО КриптоПро CSP запустите его и убедитесь что версия программы не ниже 4-й.
Если ее там нет, то скачайте, установите и перезапустите браузер.

2. Если у вас токен (Рутокен например)
Прежде чем система сможет с ним работать понадобится установить нужный драйвер.
- Драйверы Рутокен:https://www.rutoken.ru/support/download/drivers-for-windows/
- Драйверы eToken:https://www.aladdin-rd.ru/support/downloads/etoken
- Драйверы JaCarta:https://www.aladdin-rd.ru/support/downloads/jacarta
Алгоритм такой: (1) Скачиваем; (2) Устанавливаем.
Для токена может понадобиться стандартный (заводской) пин-код, здесь есть стандартные пин-коды носителей.
3. Если закрытый ключ в виде файлов
Закрытый ключ может быть в виде 6 файлов: header.key , masks.key , masks2.key , name.key , primary.key , primary2.key
Тут есть тонкость если эти файлы записаны на жесткий диск вашего компьютера, то КриптоПро CSP не сможет их прочитать, поэтому все действия надо производить предварительно записав их на флешку (съемный носитель), причем нужно расположить их в папку первого уровня, например: E:\Andrey\ , если расположить в E:\Andrey\keys\ , то работать не будет.
(Если вы не боитесь командной строки, то съемный носитель можно сэмулировать примерно так: subst x: C:\tmp появится новый диск (X:), в нем будет содержимое папки C:\tmp, он исчезнет после перезагрузки. Такой способ можно использовать если вы планируете установить ключи в реестр)
Нашли файлы, записали на флешку, переходим к следующему шагу.
4. Установка сертификата из закрытого ключа
Теперь нам нужно получить сертификат, сделать это можно следующим образом:
- Открываем КриптоПро CSP
- Заходим на вкладку Сервис
- Нажимаем кнопку Просмотреть сертификаты в контейнере, нажимаем Обзор и здесь (если на предыдущих шагах сделали все правильно) у нас появится наш контейнер. Нажимаем кнопку Далее, появятся сведения о сертификате и тут нажимаем кнопку Установить (программа может задать вопрос проставить ли ссылку на закрытый ключ, ответьте «Да»)
- После этого сертификат будет установлен в хранилище и станет возможным подписание документов (при этом, в момент подписания документа, нужно будет чтобы флешка или токен были вставлены в компьютер)
5. Использование электронной подписи без токена или флешки (установка в реестр)
Если скорость и удобство работы для вас стоит чуть выше чем безопасность, то можно установить ваш закрытый ключ в реестр Windows. Для этого нужно сделать несколько простых действий:
- Выполните подготовку закрытого ключа, описанную в пунктах (2) или (3)
- Далее открываем КриптоПро CSP
- Заходим на вкладку Сервис
- Нажимаем кнопку Скопировать
- С помощью кнопки Обзор выбираем наш ключ
- Нажимаем кнопку Далее, потом придумаем какое-нибудь имя, например «Пупкин, ООО Ромашка» и нажимаем кнопку Готово
- Появится окно, в котором будет предложено выбрать носитель, выбираем Реестр, жмем Ок
- Система попросит Установить пароль для контейнера, придумываем пароль, жмем Ок
Чтобы для сертификата проставить ссылку на этот закрытый ключ выполните действия из пункта (4).
Важное замечание: портал OpenSRO не «увидит» сертификат, если вышел срок его действия.
Как установить контейнер закрытого ключа в КриптоПро
КриптоПро — один из ведущих разработчиков программного обеспечения для обеспечения безопасности информации в России. Среди прочих функций, КриптоПро позволяет создать контейнер закрытого ключа для зашифрования и подписи данных.
Контейнер закрытого ключа — это файл, который содержит зашифрованные данные, необходимые для работы с криптографическими функциями. Установка контейнера закрытого ключа является важным шагом в настройке системы безопасности на вашем компьютере.
В этой пошаговой инструкции мы расскажем, как установить контейнер закрытого ключа в КриптоПро и настроить его для использования. Пользуясь данной инструкцией, вы сможете защитить свою информацию и обеспечить ее безопасность.
Как установить контейнер закрытого ключа в КриптоПро?
Установка контейнера закрытого ключа в КриптоПро состоит из нескольких шагов:
- Откройте программу КриптоПро.
- Выберите в меню пункт «Сертификаты» и далее «Установить контейнер закрытого ключа».
- Выберите способ установки контейнера из предложенных вариантов: Установить из файла — выберите файл контейнера с расширением ‘.p12’, ‘.pfx’ или ‘.key’ на вашем компьютере. Установить из устройства — выберите устройство, подключенное к компьютеру, на котором находится контейнер. Установить с использованием средств операционной системы — выберите способ установки контейнера с использованием функций операционной системы. Зашифровать ключи паролем сессии — задайте пароль для защиты ключа во время сессии работы с программой.
Создать резервные копии контейнеров — создайте резервные копии контейнеров, чтобы восстановить их в случае потери или повреждения. Установить информацию о владельце — введите информацию о владельце контейнера (имя, организация и др.). После успешной установки контейнера закрытого ключа вы можете использовать его для различных операций в КриптоПро, таких как подпись и шифрование документов.
Шаг 1: Запуск программы КриптоПро
- Откройте меню «Пуск» и найдите папку «КриптоПро».
- В папке «КриптоПро» найдите и запустите программу «КриптоПро CSP».
После запуска программы КриптоПро вы увидите главное окно, где будут отображены доступные операции и сертификаты.
Для установки контейнера закрытого ключа необходимо перейти в раздел «Личный сертификат», который обычно расположен в левой части окна программы.
Как только вы перешли в раздел «Личный сертификат», вы готовы приступить к следующим шагам установки контейнера закрытого ключа в КриптоПро.
Шаг 2: Выбор контейнера закрытого ключа
После успешной установки КриптоПро вам необходимо выбрать контейнер закрытого ключа для его установки. Контейнеры закрытого ключа хранят в себе секретную информацию и используются для подписи документов, шифрования данных и других криптографических операций.
Для выбора контейнера закрытого ключа выполните следующие действия:
- Откройте панель управления КриптоПро, щелкнув на иконке программы в системном трее или используя ярлык на рабочем столе.
- Выберите вкладку «Ключи» или «Certificates», в зависимости от версии программы.
- В открывшемся окне вы увидите список доступных контейнеров закрытого ключа. Контейнеры обычно имеют имена в формате «My Key Container» или «Контейнер 1».
- Выберите нужный контейнер закрытого ключа, щелкнув на нем один раз.
После выбора контейнера закрытого ключа вы можете приступить к работе с ним, выполнять различные операции шифрования, подписи и расшифровки.
Обратите внимание, что при установке КриптоПро может быть несколько контейнеров закрытого ключа. Если вы не знаете, какой выбрать, обратитесь к системному администратору или следуйте рекомендациям вашей организации.
Шаг 3: Ввод пароля для контейнера
После создания контейнера закрытого ключа в КриптоПро, вам потребуется задать пароль для доступа к нему. Пароль необходимо выбрать достаточно сложным, чтобы гарантировать безопасность вашего закрытого ключа.
Для ввода пароля следуйте инструкциям ниже:
- На экране появится окно с предложением ввести пароль для контейнера.
- В поле ввода введите пароль, учитывая следующие указания:
- Пароль должен содержать минимум 8 символов;
- Пароль должен содержать как минимум одну заглавную букву (A-Z);
- Пароль должен содержать как минимум одну строчную букву (a-z);
- Пароль должен содержать как минимум одну цифру (0-9);
- Пароль должен содержать как минимум один специальный символ (!@#$%^&*).
- Пароль будет отображаться в виде символов ‘*’, чтобы обеспечить конфиденциальность.
- Повторите ввод пароля в поле подтверждения.
После успешного ввода пароля, контейнер закрытого ключа будет защищен вашим паролем и готов к использованию.
Шаг 4: Успешная установка контейнера
Поздравляем! Вы успешно установили контейнер закрытого ключа в КриптоПро.
Теперь у вас есть доступ к своему закрытому ключу, который можно использовать для различных операций с электронной подписью.
При использовании контейнера закрытого ключа важно помнить о сохранности и конфиденциальности данного ключа. Не передавайте его третьим лицам и храните в надежном месте.
Теперь вы можете приступить к использованию КриптоПро с вашим контейнером закрытого ключа и наслаждаться его функциональностью.
Похожие публикации:
- Как заработать на киберспорте в россии
- Как стать популярным блоггером
- Поставщик гарантирует что является добросовестным налогоплательщиком
- Справка о прожиточном минимуме где взять
Команды работы с контейнерами закрытого ключа
Описание служебных команд КриптоПро CSP, используемых на шлюзе NGate для работы с закрытыми ключами.
Получение перечня имеющихся контейнеров
Для получения перечня имеющихся ключевых контейнеров выполните команду
sudo -u nginx /opt/cprocsp/bin/amd64/csptest \
-keyset -enum_cont -verifycontext -fqcn
Удаление ключевого контейнера
Для удаления контейнера выполните команду
sudo –u nginx /opt/cprocsp/bin/amd64/csptest –keyset -deletekeyset \ -container ‘\\.\HDIMAGE\’
где ‘\\.\HDIMAGE\’ – полное имя контейнера, который необходимо удалить.
Получение перечня имеющихся хранилищ
Для получения перечня имеющихся хранилищ сертификатов выполните команду
sudo -u nginx /opt/cprocsp/bin/amd64/certmgr -enum user
Читаем контейнер закрытого ключа КриптоПро средствами OpenSSL
Речь пойдет о файлах primary.key, masks.key и header.key, которые лежат в директории ххххх.000 на флешке. Данные файлы входят в состав криптоконтейнера закрытого ключа электронной подписи криптопровайдера КриптоПро, формат которого нигде не опубликован. Целью данной статьи является чтение контейнера и преобразование закрытого ключа в формат, который может быть прочитан в библиотеке OpenSSL. Долгое время было распространено ошибочное суждение, что достаточно сделать нечто вида (primary_key XOR masks_key) и мы получим закрытый ключ в чистом (raw) виде, однако забегая вперед, можно утверждать, что в КриптоПро было применено более сложное преобразование, в худшем случае состоящее из более чем 2000 (двух тысяч) операций хеширования.
- Читает контейнер не напрямую, а через криптопровайдер, поэтому там, где кроме OpenSSL ничего нет, не работает.
- Если в свойствах ключа не отмечено, что ключ «экспортируемый», то конвертировать его невозможно.
- В демо версии не формирует файл с ключом, эта возможность присутствует только в платной версии.
Файл primary.key
Содержит 32 байта ключа в формате Asn1. Это только половина ключа, полный ключ получается при делении этого числа по модулю Q на маску. Поле, хранящее модуль Q в библиотеке OpenSSL имеет название order. Маска лежит в файле masks.key:
Файл masks.key
Содержит 32 байта маски ключа в формате Asn1, зашифрованного на ключе хранения pwd_key. Далее 12 байт «затравочной» информации для генерации ключа хранения pwd_key, если криптоконтейнер защищен паролем, то пароль также участвует в генерации ключа хранения.
Далее контрольная сумма (имитозащита) 4 байта. Контрольной информацией для простоты мы пользоваться не будем, общий контроль будет осуществляться путем генерации открытого ключа и сравнения первых 8 байт полученного ключа с соответствующим полем из файла header.key:

Файл header.key
- GostR3410_2001_CryptoPro_A_ParamSet — 1.2.643.2.2.35.1
- GostR3410_2001_CryptoPro_B_ParamSet — 1.2.643.2.2.35.2
- GostR3410_2001_CryptoPro_C_ParamSet — 1.2.643.2.2.35.3
- GostR3410_2001_CryptoPro_XchA_ParamSet — 1.2.643.2.2.36.0
- GostR3410_2001_CryptoPro_XchB_ParamSet — 1.2.643.2.2.36.1

Читаем закрытый ключ и конвертируем
Файл privkey.c
#include #include #include #include #include #include #include "gost_lcl.h" /* Convert little-endian byte array into bignum */ BIGNUM *reverse32bn(char *b, BN_CTX *ctx) < BIGNUM *res; char buf[32]; BUF_reverse(buf, b, 32); res = BN_bin2bn(buf, 32, BN_CTX_get(ctx)); OPENSSL_cleanse(buf, sizeof(buf)); return res; >void xor_material(char *buf36, char *buf5C, char *src) < int i; for(i = 0; i < 32; i++) < buf36[i] = src[i] ^ 0x36; buf5C[i] = src[i] ^ 0x5C; >> int make_pwd_key(char *result_key, char *start12, int start12_len, char *passw) < int result; int i; char pincode4[1024]; int pin_len; char current[32]; char material36[32]; char material5C[32]; char hash_result[32]; gost_hash_ctx ctx; init_gost_hash_ctx(&ctx, &GostR3411_94_CryptoProParamSet); memset(pincode4, 0, sizeof(pincode4)); pin_len = strlen(passw); if (pin_len*4 >sizeof(pincode4)) < result = 1; goto err; >for(i = 0; i < pin_len; i++) pincode4[i*4] = passw[i]; start_hash(&ctx); hash_block(&ctx, start12, start12_len); if (pin_len) hash_block(&ctx, pincode4, pin_len * 4); finish_hash(&ctx, hash_result); memcpy(current, (char*)"DENEFH028.760246785.IUEFHWUIO.EF", 32); for(i = 0; i < (pin_len?2000:2); i++) < xor_material(material36, material5C, current); start_hash(&ctx); hash_block(&ctx, material36, 32); hash_block(&ctx, hash_result, 32); hash_block(&ctx, material5C, 32); hash_block(&ctx, hash_result, 32); finish_hash(&ctx, current); >xor_material(material36, material5C, current); start_hash(&ctx); hash_block(&ctx, material36, 32); hash_block(&ctx, start12, start12_len); hash_block(&ctx, material5C, 32); if (pin_len) hash_block(&ctx, pincode4, pin_len * 4); finish_hash(&ctx, current); start_hash(&ctx); hash_block(&ctx, current, 32); finish_hash(&ctx, result_key); result = 0; //ok err: return result; > BIGNUM *decode_primary_key(char *pwd_key, char *primary_key, BN_CTX *bn_ctx) < BIGNUM *res; char buf[32]; gost_ctx ctx; gost_init(&ctx, gost_cipher_list->sblock); gost_key(&ctx, pwd_key); gost_dec(&ctx, primary_key, buf, 4); res = reverse32bn(buf, bn_ctx); OPENSSL_cleanse(buf, sizeof(buf)); return res; > BIGNUM *remove_mask_and_check_public(char *oid_param_set8, BIGNUM *key_with_mask, BIGNUM *mask, char *public8, BN_CTX *ctx) < int result; EC_KEY *eckey = NULL; const EC_POINT *pubkey; const EC_GROUP *group; BIGNUM *X, *Y, *order, *raw_secret, *mask_inv; char outbuf[32], public_X[32]; ASN1_OBJECT *obj; int nid; order = BN_CTX_get(ctx); mask_inv = BN_CTX_get(ctx); raw_secret = BN_CTX_get(ctx); X = BN_CTX_get(ctx); Y = BN_CTX_get(ctx); if (!order || !mask_inv || !raw_secret || !X || !Y) < result = 1; goto err; >obj = ASN1_OBJECT_create(0, oid_param_set8+1, *oid_param_set8, NULL, NULL); nid = OBJ_obj2nid(obj); ASN1_OBJECT_free(obj); if (!(eckey = EC_KEY_new())) < result = 1; goto err; >if (!fill_GOST2001_params(eckey, nid)) < result = 1; goto err; >if (!(group = EC_KEY_get0_group(eckey))) < result = 1; goto err; >if (!EC_GROUP_get_order(group, order, ctx)) < result = 1; goto err; >if (!BN_mod_inverse(mask_inv, mask, order, ctx)) < result = 1; goto err; >if (!BN_mod_mul(raw_secret, key_with_mask, mask_inv, order, ctx)) < result = 1; goto err; >if (!EC_KEY_set_private_key(eckey, raw_secret)) < result = 1; goto err; >if (!gost2001_compute_public(eckey)) < result = 1; goto err; >if (!(pubkey = EC_KEY_get0_public_key(eckey))) < result = 1; goto err; >if (!EC_POINT_get_affine_coordinates_GFp(group, pubkey, X, Y, ctx)) < result = 1; goto err; >store_bignum(X, outbuf, sizeof(outbuf)); BUF_reverse(public_X, outbuf, sizeof(outbuf)); if (memcmp(public_X, public8, 8) != 0) < result = 1; goto err; >result = 0; //ok err: if (eckey) EC_KEY_free(eckey); if (result == 0) return raw_secret; return NULL; > int file_length(char *fname) < int len; FILE *f = fopen(fname, "rb"); if (f == NULL) return -1; fseek(f, 0, SEEK_END); len = ftell(f); fclose(f); return len; >int read_file(char *fname, int start_pos, char *buf, int len) < int read_len; FILE *f = fopen(fname, "rb"); if (f == NULL) return 1; if (start_pos) fseek(f, start_pos, SEEK_SET); read_len = fread(buf, 1, len, f); fclose(f); if (read_len != len) return 1; return 0; //ok >int get_asn1_len(unsigned char *buf, int *size_hdr) < int n, i, res; int pos = 0; if ((buf[pos]&0x80) == 0) < *size_hdr = 1; return buf[pos]; >n = buf[pos++]&0x7f; res = 0; for(i = 0; i < n; i++) < res = res*256 + buf[pos++]; >*size_hdr = n+1; return res; > #define MAX_HEADER 20000 int read_container(char *fpath, int flag2, char *salt12, char *primary_key, char *masks_key, char *public8, char *oid_param_set8) < int result; char primary_path[1024+30]; char masks_path[1024+30]; char header_path[1024+30]; char header_buf[MAX_HEADER]; int header_len; int i, len, pos, size_hdr; if (strlen(fpath)>1024) < result = 1; goto err; >sprintf(header_path, "%s/header.key", fpath); if (flag2 == 0) < sprintf(primary_path, "%s/primary.key", fpath); sprintf(masks_path, "%s/masks.key", fpath); >else < sprintf(primary_path, "%s/primary2.key", fpath); sprintf(masks_path, "%s/masks2.key", fpath); >if (read_file(primary_path, 4, primary_key, 32)) < result = 1; goto err; >if (read_file(masks_path, 4, masks_key, 32)) < result = 1; goto err; >if (read_file(masks_path, 0x26, salt12, 12)) < result = 1; goto err; >header_len = file_length(header_path); if (header_len < 0x42 || header_len >MAX_HEADER) < result = 1; goto err; >if (read_file(header_path, 0, header_buf, header_len)) < result = 1; goto err; >//------------- skip certificate --------------------------- pos = 0; for(i = 0; i < 2; i++) < get_asn1_len(header_buf+pos+1, &size_hdr); pos += size_hdr+1; if (pos >header_len-8) < result = 2; goto err; >> //------------------ get oid_param_set8 ----------------------- #define PARAM_SET_POS 34 if (memcmp(header_buf+pos+PARAM_SET_POS, "\x6\x7", 2) != 0) < result = 2; goto err; >memcpy(oid_param_set8, header_buf+pos+PARAM_SET_POS+1, 8); //------------------ get public8 ----------------------- result = 2; //not found pos += 52; for(i = 0; i < 3; i++) < len = get_asn1_len(header_buf+pos+1, &size_hdr); if (len == 8 && memcmp(header_buf+pos, "\x8a\x8", 2) == 0) < memcpy(public8,header_buf+pos+2,8); result = 0; //ok break; >pos += len+size_hdr+1; if (pos > header_len-8) < result = 2; goto err; >> err: OPENSSL_cleanse(header_buf, sizeof(header_buf)); return result; > #define START_OID 0x12 #define START_KEY 0x28 unsigned char asn1_private_key[72] = < 0x30,0x46,2,1,0,0x30,0x1c,6,6,0x2a,0x85,3,2,2,0x13,0x30,0x12,6,7,0x11, 0x11,0x11,0x11,0x11,0x11,0x11,6,7,0x2a,0x85,3,2,2,0x1e,1,4,0x23,2,0x21,0 >; int main(int argc, char **argv) < int result; char *container_path; char *passw; char salt12[12]; char primary_key[32]; char masks_key[32]; char public8[8]; char oid_param_set8[8]; BN_CTX *ctx; BIGNUM *key_with_mask; BIGNUM *mask; BIGNUM *raw_key; char pwd_key[32]; char outbuf[32]; ctx = BN_CTX_new(); if (argc == 2) < container_path = argv[1]; passw = ""; >else if (argc == 3) < container_path = argv[1]; passw = argv[2]; >else < printf("get_private container_path [passw]\n"); result = 1; goto err; >if (read_container(container_path, 0, salt12, primary_key, masks_key, public8, oid_param_set8) != 0 && read_container(container_path, 1, salt12, primary_key, masks_key, public8, oid_param_set8) != 0) < printf("can not read container from %s\n", container_path); result = 2; goto err; >make_pwd_key(pwd_key, salt12, 12, passw); key_with_mask = decode_primary_key(pwd_key, primary_key, ctx); OPENSSL_cleanse(pwd_key, sizeof(pwd_key)); mask = reverse32bn(masks_key, ctx); raw_key = remove_mask_and_check_public(oid_param_set8, key_with_mask, mask, public8, ctx); if (raw_key) < BIO *bio; store_bignum(raw_key, outbuf, sizeof(outbuf)); memcpy(asn1_private_key+START_OID, oid_param_set8, 8); memcpy(asn1_private_key+START_KEY, outbuf, 32); //bio = BIO_new_file("private.key", "w"); bio = BIO_new_fp(stdout, BIO_NOCLOSE | BIO_FP_TEXT); PEM_write_bio(bio, "PRIVATE KEY", "", asn1_private_key, sizeof(asn1_private_key)); BIO_free(bio); OPENSSL_cleanse(outbuf, sizeof(outbuf)); OPENSSL_cleanse(asn1_private_key, sizeof(asn1_private_key)); result = 0; //ok >else < printf("Error check public key\n"); result = 3; >err: BN_CTX_free(ctx); OPENSSL_cleanse(salt12, sizeof(salt12)); OPENSSL_cleanse(primary_key, sizeof(primary_key)); OPENSSL_cleanse(masks_key, sizeof(masks_key)); return result; >
Основную работу выполняют следующие 3 функции:
1. Создаем ключ хранения исходя из 12-ти байтовой «соли» и пароля.
make_pwd_key(pwd_key, salt12, 12, passw);
2. Расшифровываем основной ключ на ключе хранения.
key_with_mask = decode_primary_key(pwd_key, primary_key, ctx);
3. Делим ключ с маской на маску.
raw_key = remove_mask_and_check_public(oid_param_set8, key_with_mask, mask, public8, ctx);
Но так как в библиотеке OpenSSL операция деления по модулю традиционно отсутствует, пользуемся операцией взятия обратного числа и умножением.
if (!BN_mod_inverse(mask_inv, mask, order, ctx)) < result = 1; goto err; >if (!BN_mod_mul(raw_secret, key_with_mask, mask_inv, order, ctx))
Сборка утилиты конвертирования ключа
Далее сборка исходников описана для Linux версии.
Версию для Windows можно скачать отсюда там же есть сертификаты и закрытый ключ для тестирования, для сборки потребуется бесплатный компилятор Borland C++ 5.5
Компиляция OpenSSL библиотеки
После скачивания и распаковки исходных текстов openssl в целевой директории выполняем команды:
./config make
Получаем готовую библиотеку libcrypto.a в текущей директории.
Также потребуются заголовочные файлы из директорий engines/ccgost и include.
Компиляция privkey.c
gcc -o privkey -Iengines/ccgost -Iinclude privkey.c libcrypto.a -pthread -ldl
Формирование файла закрытого ключа private.key
./privkey /mnt/usbflash/lp-9a0fe.000
Тестовый закрытый ключ в криптоконтейнере lp-9a0fe.000, сертификат открытого ключа signer.cer и другие файлы для тестирования можно взять отсюда
Получаем результат работы:
-----BEGIN PRIVATE KEY----- MEYCAQAwHAYGKoUDAgITMBIGByqFAwICJAAGByqFAwICHgEEIwIhAKzsrv/l1Uwk uzph/LQN9mux0Jz0yaW21kOYEFv0Xyut -----END PRIVATE KEY-----
Cохраняем в private.key
Пользуемся закрытым ключом private.key для подписывания файла file.txt
openssl cms -sign -inkey private.key -in file.txt -CAfile CA.cer -signer signer.cer -engine gost -out test.sign -outform DER -noattr -binary
Проверяем подпись
openssl cms -verify -content file.txt -in test.sign -CAfile CA.cer -signer signer.cer -engine gost -inform DER -noattr -binary
Все работает просто замечательно!
Спасибо за внимание. Это была моя первая статья на хабре.
- криптопро
- криптопровайдер
- закрытый ключ