Как узнать имя контейнера закрытого ключа криптопро linux

Содержание
  1. Работа с КриптоПро на linux сервере
  2. Ссылки
  3. Лицензия
  4. Корневые сертификаты
  5. Сертификаты
  6. Список установленных сертификатов
  7. Добавление реального сертификата
  8. Добавление реального сертификата с привязкой к закрытому ключу и возможностью подписывать документы
  9. Способ с дискетой или флешкой
  10. С жесткого диска
  11. Проверка успешности установки закрытого ключа
  12. Добавление тестового сертификата
  13. Удаление сертификата
  14. Проверка сертификата
  15. Просмотр всех атрибутов сертификата
  16. Экспорт сертификатов на другую машину
  17. Подписание документа ЭЦП
  18. Проверка подписи ЭЦП
  19. Получение исходного файла
  20. Почему не работает команда csptest -keycopy -src cont ‘\.\FLASH\qwerty’ -d cont ‘\.\HDIMAGE\qwerty’ ?
  21. Как сделать новые закрытые ключи?
  22. Как проверить, работоспособен ли контейнер с закрытыми ключами?
  23. Как посмотреть список закрытых ключей?
  24. Как в Linux/Unix установить сертификаты?
  25. Как скопировать ключи с дискеты/флешки на HDIMAGE?
  26. Что такое ключевой контейнер? Зачем нужен пароль на контейнер?
  27. Читаем контейнер закрытого ключа КриптоПро средствами OpenSSL
  28. Файл primary.key
  29. Файл masks.key
  30. Файл header.key
  31. Читаем закрытый ключ и конвертируем
  32. Сборка утилиты конвертирования ключа
  33. Компиляция OpenSSL библиотеки
  34. Компиляция privkey.c
  35. Формирование файла закрытого ключа private.key
  36. Пользуемся закрытым ключом private.key для подписывания файла file.txt
  37. Проверяем подпись
  38. Как найти сертификат ключа ЭЦП на компьютере
  39. Где хранится ЭЦП на компьютере
  40. Как посмотреть сертификат ЭЦП
  41. Через КриптоПро
  42. Через Certmgr
  43. Через Internet Explorer
  44. Через консоль управления
  45. Где в реестре хранится ЭЦП
  46. Где хранится сертификат ЭЦП в ОС Windows XP
  47. Где хранится ЭЦП в системах Linux

Работа с КриптоПро на linux сервере

Ссылки

Лицензия

Для установки другой лицензии (под root):

Корневые сертификаты

Просмотр корневых сертификатов

Добавление корневых сертификатов (под root) из файла cacer.p7b

Необходимо последовательно добавить все сертификаты

Сертификаты

Список установленных сертификатов

certmgr -list , например:

Добавление реального сертификата

Добавить только сертификат (только проверка ЭЦП):

Добавление реального сертификата с привязкой к закрытому ключу и возможностью подписывать документы

Закрытый ключ состоит из шести key-файлов:

Способ с дискетой или флешкой

Скопировать в корень дискеты или флэшки сертификат и приватный ключ (из каталога 999996.000 , 999996 — название (alias) контейнера):

Выполнить команду по копированию ключа с флэшки на диск, ключ попадет в пользовательское хранилище My .

gate@example.com — то, что прописано в поле E сертификата (можно посмотреть командой keytool —printcert -file /path/to/cert/client.cer ):

С жесткого диска

Скопировать приватный ключ в хранилище (контейнер), где — имя пользователя linux:

Поставить «минимальные» права:

Узнать реальное название контейнера:

Ассоциировать сертификат с контейнером, сертификат попадет в пользовательское хранилище My :

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

Установить сертификат УЦ из-под пользователя root командой:

Проверка успешности установки закрытого ключа

Добавление тестового сертификата

Ввести пароль на контейнер 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.

Корневой сертификат УЦ, список отзыва сертификата является одним из реквизитов самого сертификата.

Контрагенты когда открывают подписи в КриптоАРМ используют revocation provider, он делает проверки отзыва сертификата онлайн. Как реализована проверка в Шарепоинте не знаю. Знаю только что используется библиотека Крипто.Net

Проверка конкретной подписи из локального хранилища по его хешу:

Проверить, взяв сертификат из 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

Получение исходного файла

Получение исходного файла (сообщения):

Будет ругаться на сертификат (так как не будет проверки), но подпись удалит. Вариант с проверкой:

Источник

Почему не работает команда csptest -keycopy -src cont ‘\\.\FLASH\qwerty’ -d cont ‘\\.\HDIMAGE\qwerty’ ?

Проблема может быть в том, что нельзя создавать два контейнера с одинаковым именем.

Попробуйте назвать копию как-нибудь иначе, например:

csptest -keycopy -src cont ‘\\.\FLASH\qwerty’ -d cont ‘\\.\HDIMAGE\qwerty1’

Как сделать новые закрытые ключи?

Обычно ключи создаются вместе с запросом на сертификат. Если Вам требуется создать ключи и запрос на сертификат, воспользуйтесь утилитой cryptcp(документация на неё входит в состав документации на CSP, см. раздел «Работа с запросами на сертификат»).

Если требуется просто сделать новые ключи, можно воспользоваться утилитой csptest. Она находится в директории /opt/cprocsp/bin/ .

Создание контейнера пользователя:
csptest -keyset -newkeyset -cont ‘\\.\имя считывателя\имя контейнера’

Создание контейнера компьютера:

Как проверить, работоспособен ли контейнер с закрытыми ключами?

Открыть(проверить) контейнер можно утилитой csptest. Она находится в директории /opt/cprocsp/bin/ :

Открыть(проверить) контейнер пользователя:
csptest -keyset -check -cont ‘\\.\имя считывателя\имя контейнера’

Открыть(проверить) контейнер компьютера:
csptest -keyset -check -cont ‘\\.\имя считывателя\имя контейнера’ -machinekeyset

где имя считывателя:
HDIMAGE, если используете жесткий диск для хранения ключей
FLASH, если используете флешку
FAT12_0, если используете дискету

Как посмотреть список закрытых ключей?

Список контейнеров с закрытыми ключами можно посмотреть утилитой csptest. Она находится в директории /opt/cprocsp/bin/

Перечисление контейнеров пользователя:
csptest -keyset -enum_cont -verifycontext -fqcn

Перечисление контейнеров компьютера:
csptest -keyset -enum_cont -verifycontext -fqcn -machinekeys

В полученном списке имена контейнеров будут представлены в том виде, в котором их воспринимают все бинарные утилиты, входящие в дистрибутив CSP (\\.\ \ ).

Как в Linux/Unix установить сертификаты?

Основной утилитой для работы с сертификатами является certmgr (лежит в /opt/cprocsp/bin/ ). К ней есть man:
man 8 certmgr

Установка корневого сертификата:
certmgr -inst -store root -file

Установка личного сертификата:
certmgr -inst -file -cont

Установка стороннего сертификата:
certmgr -inst -file

Как скопировать ключи с дискеты/флешки на HDIMAGE?

Скопируйте ключи(директорию с именем в формате 8.3) из корня дискеты или флешки в директорию /var/opt/cprocsp/keys/имя_пользователя

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

Что такое ключевой контейнер? Зачем нужен пароль на контейнер?

Ключевые контейнеры – это способ хранения закрытых ключей, реализованный в нашем продукте. Их физическое представление зависит от типа ключевого носителя (на флешке, дискете, жестком диске это директория в которой хранится набор файлов с ключевой информацией; в случае со смарт-картами – файлы в защищенной памяти смарт-карты, в случае с реестром – раздел реестра, содержащий некоторые параметры). Пароль на контейнер имеет разное значение для смарт-карт и для носителей, не являющихся смарт-картами.

Источник

Читаем контейнер закрытого ключа КриптоПро средствами OpenSSL

Речь пойдет о файлах primary.key, masks.key и header.key, которые лежат в директории ххххх.000 на флешке. Данные файлы входят в состав криптоконтейнера закрытого ключа электронной подписи криптопровайдера КриптоПро, формат которого нигде не опубликован. Целью данной статьи является чтение контейнера и преобразование закрытого ключа в формат, который может быть прочитан в библиотеке OpenSSL. Долгое время было распространено ошибочное суждение, что достаточно сделать нечто вида (primary_key XOR masks_key) и мы получим закрытый ключ в чистом (raw) виде, однако забегая вперед, можно утверждать, что в КриптоПро было применено более сложное преобразование, в худшем случае состоящее из более чем 2000 (двух тысяч) операций хеширования.

Стоит упомянуть о существовании утилиты P12FromGostCSP которая позволяет конвертировать ключ в формат P12, доступный для работы с OpenSSL, но утилита имеет следующие существенные недостатки:

  • Читает контейнер не напрямую, а через криптопровайдер, поэтому там, где кроме 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

Из этого файла нам потребуется параметры электронной подписи CryptoProParamSet (подчеркнуто красным).

  • 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

А также первые 8 байт открытого ключа (подчеркнуто) для контроля правильности чтения закрытого.

Читаем закрытый ключ и конвертируем

Основную работу выполняют следующие 3 функции:

1. Создаем ключ хранения исходя из 12-ти байтовой «соли» и пароля.

2. Расшифровываем основной ключ на ключе хранения.

3. Делим ключ с маской на маску.

Но так как в библиотеке OpenSLL операция деления по модулю традиционно отсутствует, пользуемся операцией взятия обратного числа и умножением.

Сборка утилиты конвертирования ключа

Далее сборка исходников описана для Linux версии.

Версию для Windows можно скачать отсюда там же есть сертификаты и закрытый ключ для тестирования, для сборки потребуется бесплатный компилятор Borland C++ 5.5

Компиляция OpenSSL библиотеки

После скачивания и распаковки исходных текстов openssl в целевой директории выполняем команды:

Получаем готовую библиотеку libcrypto.a в текущей директории.
Также потребуются заголовочные файлы из директорий engines/ccgost и include.

Компиляция privkey.c

Формирование файла закрытого ключа private.key

Тестовый закрытый ключ в криптоконтейнере lp-9a0fe.000, сертификат открытого ключа signer.cer и другие файлы для тестирования можно взять отсюда

Получаем результат работы:

Cохраняем в private.key

Пользуемся закрытым ключом private.key для подписывания файла file.txt

Проверяем подпись

Все работает просто замечательно!

Спасибо за внимание. Это была моя первая статья на хабре.

Источник

Как найти сертификат ключа ЭЦП на компьютере

Если электронную подпись нужно использовать на нескольких компьютерах или скопировать сертификат на запасной носитель, то необходимо знать, где ее искать. Обычно сертификаты хранятся в одном месте, но в зависимости от типа используемой операционной системы путь к хранилищу может быть разным.

Где хранится ЭЦП на компьютере

Найти сертификат ключа электронной подписи на ОС Windows Vista и выше можно по адресу: C:Users/ПОЛЬЗОВАТЕЛЬ/App/Data/Roaming/MicrosoftSystem/Certificates. Где «‎Пользователь» — это название учетной записи ПК. В целях безопасности система сохраняет в данной папке только открытый, т.е. доступный всем, ключ ЭЦП. Закрытый ключ не копируется на жесткий диск и хранится на токене. Используется он для генерации открытых ключей.

Для программного пользования открытый ключ хранится в папке Windows в зашифрованном виде. Скопировать этот файл не получится, т.к. система не дает права доступа к нему. Просмотр установленных сертификатов возможен только администратор ПК.

Сертификат ЭЦП имеет формат .cer или .csr, и занимает несколько КВ памяти. В операционных системах MacOS и Linux формат файла не меняется, поскольку является единым для использования на территории РФ.

Как посмотреть сертификат ЭЦП

Посмотреть установленные сертификаты можно при помощи Internet Explorer, Certmgr, консоль управления или КриптоПро. Пользоваться другими компьютерными программами не рекомендуется: они могут иметь встроенную команду отправки ключа ЭЦП на сторонний сервер, что приведет к компрометации подписи и невозможности ее использования.

Через КриптоПро

Как найти сертификат ЭЦП на компьютере при помощи КриптоПро:

  1. открыть «‎Пуск»;
  2. через вкладку «‎Все программы» перейти в «‎КриптоПро»;
  3. выбрать вкладку «‎Сертификаты».

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

Через Certmgr

Найти файл сертификата можно и при помощи встроенного менеджера, который присутствует во всех ОС Windows. Через него можно не только посмотреть все личные сертификаты, но и сертификаты УЦ и партнеров Microsoft.

Метод может использоваться только администратором ПК. Для просмотра нужно:

  1. открыть «‎Пуск»;
  2. ввести команду certmgr.msc в строку поиска и нажать Enter;
  3. в левой колонке открывшегося окна будет список личных и корневых сертификатов.

С шифрованными сертификатами приложение работает ограниченно и не всегда корректно отражает все электронные подписи, установленные пользователем.

Через Internet Explorer

Интернет-браузер IE входит в комплектацию всех ОС семейства Windows XP и выше и позволяет также найти сертификаты ЭЦП на компьютере. Для просмотра нужно:

  1. запустить браузер;
  2. через «‎Меню» перейти в «‎Свойства браузера»;
  3. в новом окне выбрать вкладку «‎Содержание»;
  4. выбрать «‎Сертификаты».

Далее откроется окно с перечнем всех сертификатов, установленных пользователем и сторонними поставщиками ПО. В данном меню возможен перенос ключей и сертификатов на внешний носитель, удаление открытых ключей. Удаление корневых сертификатов УЦ через меню IE невозможно.

Через консоль управления

Просмотр сертификатов в ОС Windows через консоль управления запускается в несколько этапов:

  1. пользователь открывает командную строку;
  2. вводит команду mmc и нажимает Enter;
  3. нажимает на «‎Файл» и «‎Добавить/удалить оснастку cryptopro»;
  4. выбирает последовательно «‎Добавить» и «Добавить изолированную оснастку»;
  5. выбирает «Сертификаты».

Дополнительно можно просмотреть ключи ЭЦП по конкретной учетной записи. Способ также доступен только пользователям с правами администратора ПК. Через консоль можно не только просматривать информация, но и удалять, копировать, добавлять контейнеры с ключами ЭЦП. Неудобство метода в том, что все команды необходимо вводить вручную. Обычны работа через консоль осуществляется на windows server для настройки прав доступа всех пользователей.

Где в реестре хранится ЭЦП

Иногда реестр используется как ключевой носитель, т.е. он подходит для импорта и экспорта сертификатов. Где находится сертификат ЭЦП зависит от битности системы:

  • для 32-битной ОС путь выглядит так: HKEY_LOCAL_MACHINE\SOFTWARE\CryptoPro\Settings\ Users\(идентификатор пользователя)\Keys\(Название контейнера)
  • для 64-битной ОС путь к ключам такой: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro\Settings \USERS\(идентификатор пользователя)\Keys\(Название хранилища)
  • реже ключи электронной подписи можно найти тут: HKEY_USERS\S-1-5-21-_Classes\VirtualStore\MACHINE\SOFTWARE \[Wow6432Node]\Crypto Pro\Settings\USERS\S-1-5-21-\Keys\

SID — это идентификатор пользователя, который идентифицирует данную учетную запись. Узнать его можно через командную строку и команду WHOAMI/USER.

Где хранится сертификат ЭЦП в ОС Windows XP

К базовым компонентам ОС Windows XP относятся службы сертификации, а XP Professional уже поддерживает многоуровневые иерархии центра сертификации (ЦС) как с изолированными и интерактивными ЦС, так и сети ЦС с доверительными перекрестными отношениями.

Открытые ключи ЭЦП Windows XP хранит в личном хранилище, а т.к. они представляют собой общедоступную информацию, то хранятся в виде открытого текста. Сертификаты пользователя находятся по адресу:

Documents and Settings\ \ApplicationData\Microsoft\ SystemCertificates\My\Certificates. Они автоматически вносятся в локальный реестр при каждом входе в систему. Если профиль перемещаемый, то открытые ключи хранятся обычно не на ПК, а следуют за пользователем при каждом входе в систему с внешнего носителя.

Такие поставщики услуг криптографии, как Enchanced CSP и Base CSP хранят закрытые ключи электронной подписи в папке %SystemRoot%\Documents and Settings\ \ Application Data\Microsoft\Crypto\RSA. Если профиль перемещаемый, то они расположены в папке RSA на контроллере домена. В этом случае на ПК они загружаются только на время работы профиля. Все файлы в данной папке шифруются случайным симметричным ключом автоматически. Основной ключ пользователя имеет длину в 64 символа и создается проверенным генератором случайных чисел.

Где хранится ЭЦП в системах Linux

В Linux системах список контейнеров с закрытыми ключами можно найти при помощи утилиты csptest. Находится она в директории: /opt/cprocsp/bin/ .

Список контейнеров компьютера: csptest -keyset -enum_cont -verifycontext -fqcn -machinekeys. Список контейнеров пользователя: csptest -keyset -enum_cont -verifycontext -fqcn. В списках имена контейнеров даются в виде, понятном для бинарных утилит, входящих в состав дистрибутива CSP.

Закрытые ключи хранятся в хранилище HDImageStore на жестком диске, и доступны они и для CSP, и для JCP.

Просмотреть список ключей электронной подписи на ОС Windows может только пользователь с правами администратора. Обычно ключи хранятся в системных папках и имеют расширение .cer или .csr. Чтобы посмотреть список, удалить ненужные элементы или скопировать их на внешний носитель можно воспользоваться программой КриптоПро, браузером Internet Explorer, консолью управления или специальной утилитой certmgr. В Windows XP открытые и закрытые ключи хранятся в разных папках, а закрытые дополнительно шифруются паролем, состоящим из комбинации случайных чисел. Системы Linux хранят все сертификаты в отдельной директории, а пусть к ним задается вручную при помощи команд.

Источник

Читайте также:  Mousocoreworker что это за процесс windows 10
Оцените статью