Перенос ключей КриптоПро CSP :: Руководство по использованию сервиса «1С-Отчетность» в 1С:Бухгалтерии 8

Перенос ключей КриптоПро CSP :: Руководство по использованию сервиса "1С-Отчетность" в 1С:Бухгалтерии 8 ЭЦП
Содержание
  1. Основные понятия (если есть аббревиатуры, понятия и т.д.)
  2. Что такое ключевой контейнер? зачем нужен пароль на контейнер?
  3. Возможные значения имени контейнера:
  4. Импорт ключей и сертификатов
  5. Как быть если доступ к старой системе невозможен?
  6. Как в linux/unix установить сертификаты?
  7. Как посмотреть список закрытых ключей?
  8. Как проверить, работоспособен ли контейнер с закрытыми ключами?
  9. Как сделать новые закрытые ключи?
  10. Как скопировать ключи с дискеты/флешки на hdimage?
  11. Как скопировать контейнер/закрытую часть ключа?
  12. Компиляция openssl библиотеки
  13. Копирование с помощью криптопро csp
  14. Проверяем подпись
  15. Сборка утилиты конвертирования ключа
  16. Установка через меню «установить личный сертификат».
  17. Файл masks.key
  18. Файл primary.key
  19. Формирование файла закрытого ключа private.key
  20. Читаем закрытый ключ и конвертируем
  21. Читаем контейнер закрытого ключа криптопро средствами openssl
  22. Экспорт ключей и сертификатов

Основные понятия (если есть аббревиатуры, понятия и т.д.)

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

Защищенный носитель — это компактное устройство, предназначенное для безопасного хранения электронной подписи. Представляет собой устройство в виде USB-флешки с защищенной паролем картой памяти, на которой хранится информация для создания электронной подписи.

Рекомендации по решению проблемы зависят от типа ключевого носителя, на котором расположен контейнер:

Flash-накопитель

Если в качестве ключевого носителя используется flash-накопитель, необходимо выполнить следующие шаги:

1. Убедиться, что в что в корне носителя находится папка, содержащая файлы: header, masks, masks2, name, primary, primary2. Файлы должны иметь расширение.key, а формат названия папки должен быть следующим: xxxxxx.000

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

Rutoken

Если в качестве ключевого носителя используется защищённый носитель Rutoken, необходимо выполнить следующие шаги:

1. Убедиться, что на рутокене горит лампочка. Если лампочка не горит, то следует воспользоваться следующими рекомендациями.

2. Обновить драйвер Rutoken (см. Как обновить драйвер Rutoken?).

3. Следует убедиться, что на Rutoken содержатся ключевые контейнеры. Для этого необходимо проверить количество свободной памяти на носителе, выполнив следующие шаги:

Если рутокен не виден в пункте «Считыватели» или при нажатии на кнопку «Информация» появляется сообщение «Состояние памяти ruToken не изменилось», значит, носитель был поврежден, необходимо обратиться к вашему менеджеру

В качестве ключевого носителя в сервисных центрах выдаются рутокены объемом памяти около 30000 байт. Один контейнер занимает объем порядка 4 Кб. Объем свободной памяти рутокена, содержащего один контейнер, составляет порядка 26 000 байт, двух контейнеров — 22 000 байт и т д.

Если объем свободной памяти рутокена составляет более 29-30 000 байт, то ключевые контейнеры на нем отсутствуют.

Реестр

Если в качестве ключевого носителя используется считыватель Реестр, необходимо выполнить следующие действия:

Убедиться, что в КриптоПро CSP настроен считыватель «Реестр». Для этого:

Если считыватель отсутствует, его необходимо добавить.

В качестве считывателей (устройств — носителей ключевой информации) могут использоваться flash-накопители, реестр, смарт-карты

Иногда некоторые считыватели могут быть отключены в КриптоПро CSP. Чтобы работать с такими носителями, нужно добавить соответствующие считыватели.

Чтобы добавить считыватели: 1. Запустите КриптоПро CSP от имени администратора.

2. На вкладке «Оборудование» нажмите кнопку «Настроить считыватели».

3. В появившемся окне нажмите «Добавить».

4. В Мастере установки считывателей выберите, какой считыватель добавить: «Все съемные диски», «Реестр», «Все считыватели смарт-карт».

5. Нажмите «Далее», задайте имя считывателя при необходимости, нажмите «Готово».

В некоторых случаях для корректной работы добавленного считывателя потребуется перезагрузка.

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

Остались вопросы?

Отдел технической поддержки

Источник

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

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

Источник

Возможные значения имени контейнера:

ЗначениеОписание
NULLКонтейнер по умолчанию. Если конфигурация «КриптоПро CSP» настроена на хранение ключей на диске, то именем контейнера по умолчанию является имя пользователя ОС, вызвавшего CSP.
CONTAINERИмя контейнера.
MEDIAUNIQUEКонтейнер по умолчанию на носителе (MEDIAUNIQUE).
MEDIAUNIQUECONTAINERКонтейнер на заданном носителе (MEDIAUNIQUE). Если носитель не поддерживает уникальных имен, то уникальное имя носителя отсутствует, но символ опускать в этом случае нельзя. Если носитель поддерживает длинные имена (например, реестр), то имя контейнера в этом случае совпадает FOLDER.
MEDIAUNIQUEFOLDERCRCКонтейнер на заданном носителе (MEDIAUNIQUE) в папке FOLDER с именем CRC16 которого в нижнем регистре в кодировке UTF8 совпадает с CRC. Если носитель не поддерживает уникальных имен, то уникальное имя носителя отсутствует, но символ опускать в этом случае нельзя. Данный формат не может использоваться для создания контейнеров.
\.READERMEDIAUNIQUEКонтейнер по умолчанию на носителе (MEDIAUNIQUE), с заданным именем считывателя.
\.READERMEDIAUNIQUECONTAINERКонтейнер на заданном носителе (MEDIAUNIQUE), с заданным именем считывателя. Если носитель не поддерживает уникальных имен, то уникальное имя носителя отсутствует, но символ опускать в этом случае нельзя.
\.READERMEDIAUNIQUEFOLDERCRCКонтейнер на заданном носителе (MEDIAUNIQUE) в папке FOLDER, с заданным именем считывателя и CRC16 имени контейнера в нижнем регистре в кодировке UTF8 совпадает с CRC. Если носитель не поддерживает уникальных имен, то уникальное имя носителя отсутствует, но символ опускать в этом случае нельзя. Если носитель поддерживает длинные имена (например, реестр), то имя контейнера в этом случае совпадает с FOLDER. Данный формат не может использоваться для создания контейнеров.
\.READERCONTAINERИмя контейнера на заданном считывателе.
\.READERКонтейнер по умолчанию на заданном считывателе.

Во всех перечисленных выше формах (кроме NULL), оконечный символ не влияет на смысл контейнера.

Полный список поддерживаемых считывателей и типов носителей можно найти в Формуляре к конкретной версии «КриптоПро CSP»

Источник

Импорт ключей и сертификатов

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

Затем снова узнаем SID пользователя, который будет работать с ЭЦП, если это текущий пользователь, то снова выполните:

Как быть если доступ к старой системе невозможен?

Теория — это хорошо, но практика может подкинуть самые неожиданные ситуации. Как быть, если доступ к старой системе невозможен? Скажем вышла из строя материнская плата или серьезно повреждена операционная система?

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

С копированием сертификатов проблемы возникнуть не должно, их хранилище простая папка на диске, а вот с хранилищем закрытых ключей в реестре немного сложнее. Но не будем забывать, что системный реестр тоже хранится в файлах на диске. Вам следует любым доступным образом скопировать файл SOFTWARE из C:WindowsSystem32config

Transfer-keys-certificates-CryptoPro-004.pngЗатем на целевой системе откройте редактор реестра, перейдите в раздел HKEY_LOCAL_MACHINE и через Файл — Загрузить куст подключите скопированный из старой системы раздел реестра. Дайте ему осмысленное имя, скажем OLD_SOFTWARE.Transfer-keys-certificates-CryptoPro-005.pngПосле чего пройдите в раздел с закрытыми ключами (с учетом новой точки монтирования) и выполните экспорт ветки Keys.Transfer-keys-certificates-CryptoPro-006.pngДальнейшие действия ничем не отличаются от описанных нами в разделе Импорт ключей и сертификатов.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если для работы используется дискета или flash-накопитель, копирование можно выполнить средствами Windows (этот способ подходит для версий КриптоПро CSP не ниже 3.0). Папку с закрытым ключом (и файл сертификата — открытый ключ, если он есть) необходимо поместить в корень дискеты (flash-накопителя).

Пример закрытого ключа — папки с шестью файлами, и открытого ключа — файла с расширением .cer.

Копирование контейнера также можно выполнить с помощью КриптоПро CSP. Для этого необходимо выполнить следующие шаги:Как правило, в закрытом ключе присутствует открытый ключ (файл header.key в этом случае будет весить больше 1 Кб). В этом случае копирование открытого ключа выполнять не обязательно.

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

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

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

Копирование с помощью криптопро csp

1. Выбрать Пуск / Панель Управления / КриптоПро CSP.

2. Перейти на вкладку Сервис и кликнуть по кнопке Скопировать контейнер.

3. В окне «Копирование контейнера закрытого ключа» нажмите на кнопку «Обзор».

4. Выберите контейнер, который необходимо скопировать, и кликните по кнопке «Ок», затем «Далее».

5. Если вы копируете с защищённого ключевого носителя, то появится окно ввода, в котором следует указать pin-код.

6. Если вы не меняли pin-код на носителе, стандартный pin-код необходимо вводить соответственно его типу:

7. В следующем окне необходимо ввести имя Вашей копии. Придумайте и укажите вручную имя для нового контейнера. В названии контейнера допускается русская раскладка и пробелы. Затем кликните «Готово».

8. В окне «Выбор ключевого носителя» выберите носитель, на который будет помещен новый контейнер.

9. На новый контейнер будет предложено установить пароль. Рекомендуем установить такой пароль, чтобы вам было легко его запомнить, но посторонние не могли его угадать или подобрать. Если вы не хотите устанавливать пароль, можно оставить поле пустым и нажать «ОК».

В случае утери пароля/pin-кода использование контейнера станет невозможным.

10. Если вы копируете контейнер на смарт-карту ruToken/eToken /JaCarta, окно запроса будет выглядеть так:

11. В окне ввода укажите pin-код. Если вы не меняли pin-код на носителе, стандартный pin-код

12. После копирования система вернется на вкладку «Сервис» КриптоПро CSP. Копирование завершено.

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

14. В меню Пуск выберите пункт «КРИПТО-ПРО», запустите приложение «КриптоПро CSP»

15. Перейдите на вкладку «Сервис» и нажмите кнопку «Просмотреть сертификаты в контейнере»:

16. В следующем окне нажмите кнопку Обзор, чтобы выбрать контейнер для просмотра (в нашем примере контейнер находится в Реестре):

17. После выбора контейнера нажмите кнопку Ок, затем Далее

18. Если после нажатия на кнопку Далее Вы видите такое сообщение:

19. «В контейнере закрытого ключа отсутствует открытый ключ шифрования», следует установить сертификат по рекомендациям, описанным в разделе «Установка через меню «Установить личный сертификат».

20. В окне Сертификат для просмотра нажмите кнопку Установить:

21. Если откроется сообщение «Этот сертификат уже присутствует в хранилище сертификатов. Заменить существующий сертификат новым, с проставленной ссылкой на закрытый ключ?», нажмите Да:

22. Дождитесь сообщения об успешной установке:

23. Сертификат установлен. Можно закрыть все открытые окна КриптоПро.

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

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

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

Источник

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

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

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

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

Установка через меню «установить личный сертификат».

1. Для установки сертификата этим способом Вам понадобится файл сертификата (файл с расширением.cer).

2. В меню Пуск выберите пункт «КРИПТО-ПРО», запустите приложение «КриптоПро CSP»

3. Перейдите на вкладку «Сервис» и нажмите кнопку «Установить личный сертификат»:

4. В следующем окне нажмите кнопку Обзор, чтобы выбрать файл сертификата. Укажите путь к файлу сертификата и нажмите кнопку Открыть (в нашем примере файл сертификата находится на Рабочем столе):

5. В следующем окне нажмите кнопку Далее; в окне Сертификат для установки нажмите Далее.

6. Поставьте галку в окне Найти контейнер автоматически (в нашем примере контейнер находится в Реестре компьютера) и нажмите Далее:

7. В следующем окне отметьте пункт Установить сертификат (цепочку сертификатов) в контейнер и нажмите Далее:

8. В окне Завершение мастера установки личного сертификата нажмите Готово.

9. Если КриптоПро CSP запрашивает pin-код от контейнера, введите нужный код или попробуйте стандартные pin-коды носителей:

10. Если откроется сообщение «Этот сертификат уже присутствует в хранилище сертификатов. Заменить существующий сертификат новым, с проставленной ссылкой на закрытый ключ?», нажмите Да:

11. Сертификат установлен. Можно закрыть все открытые окна КриптоПро.

Остались вопросы?

Отдел технической поддержки

Источник

Имя контейнера является строкой, заканчивающейся нулем, идентифицирующей носитель ключевой информации.

Может состоять из следующих частей:

Файл masks.key

Содержит 32 байта маски ключа в формате Asn1, зашифрованного на ключе хранения pwd_key. Далее 12 байт «затравочной» информации для генерации ключа хранения pwd_key, если криптоконтейнер защищен паролем, то пароль также участвует в генерации ключа хранения.

Далее контрольная сумма (имитозащита) 4 байта. Контрольной информацией для простоты мы пользоваться не будем, общий контроль будет осуществляться путем генерации открытого ключа и сравнения первых 8 байт полученного ключа с соответствующим полем из файла header.key:

Файл primary.key

Содержит 32 байта ключа в формате Asn1. Это только половина ключа, полный ключ получается при делении этого числа по модулю Q на маску. Поле, хранящее модуль Q в библиотеке OpenSSL имеет название order. Маска лежит в файле masks.key:

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

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

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

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

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

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

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

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

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

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

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

Речь пойдет о файлах primary.key, masks.key и header.key, которые лежат в директории ххххх.000 на флешке. Данные файлы входят в состав криптоконтейнера закрытого ключа электронной подписи криптопровайдера КриптоПро, формат которого нигде не опубликован.

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

Экспорт ключей и сертификатов

Для того, чтобы правильно экспортировать закрытые ключи, нам нужно выяснить идентификатор безопасности (SID) текущего пользователя (который работает с ЭЦП), это можно сделать командной:

Оцените статью
ЭЦП64
Добавить комментарий