Переносим неэкспортируемые контейнеры Крипто-ПРО
Иногда случается так что необходимо перенести клиент-банк или другое разнообразное бухгалтерское и не очень ПО с одного компьютера на другой.
В том случае когда в качестве криптопровайдера выступает СКЗИ Крипто-ПРО обычно проблем не возникает — СКЗИ имеет штатные средства копирования ключей. Но не всегда все гладко — в том случае, когда ключевой контейнер находится в реестре Windows, и при генерации ключа не была выставлена галочка «Пометить ключ как экспортируемый» то при попытке скопировать куда-либо этот ключ Крипто-ПРО будет ругаться и не скопирует ключ.
Из этой ситуации есть очень простой выход — выгружаем ветку реестра HKLM/SOFTWARE/CryptoPro/Settings/Users//Keys (в x64 операционках контейнеры лежат в HKLM/SOFTWARE/Wow6432/Node/CryptoPro/Settings/Users//Keys), а на том ПК куда необходимо импортировать смотрим разрядность ОСSID пользователя, блокнотом правим .reg файл (меняем SID и, если необходимо, путь к конечной ветке), и импортируем его в реестр.
Также этим методом очень удобно бекапить и клонировать ключи тогда, когда их много(например в аутсорс-бухгалтериях).
P.S. Не забывайте после переноса установить сертификаты из криптоконтейнеров в «Личные».
Как сделать контейнер наоборот — неэкспортируемым
Подскажите пожалуйста, как можно экспортируемый контейнер с ЭЦП скопировать на Рутокен Lite и сделать его неэкспортируемым на этом носителе?
Я не перепутал, то есть не защищенный от копирования контейнер сделать наоборот защищенным.
Как просто скопировать на Рутокен контейнер с помощью Крипто Про 5 я знаю, но он копируется с тем же свойством экспортируемого контейнера, что и оригинал.
#2 Ответ от Vladimir Ivanov 2023-01-20 17:43:19
- Vladimir Ivanov
- Администратор
- Неактивен
Re: Как сделать контейнер наоборот — неэкспортируемым
NSGrid пишет:
Подскажите пожалуйста, как можно экспортируемый контейнер с ЭЦП скопировать на Рутокен Lite и сделать его неэкспортируемым на этом носителе?
Я не перепутал, то есть не защищенный от копирования контейнер сделать наоборот защищенным.Как просто скопировать на Рутокен контейнер с помощью Крипто Про я знаю, но он копируется с тем же свойством экспортируемого контейнера, что и оригинал.
Свойство неэкспортируемости ключа задается при создании контейнера. Теоретически, если переносить контейнер не напрямую (а при этом сохраняются свойства контейнера), а через PFX, такой фокус может и получиться. Но это не точно 🙂
Лучше, конечно, сразу создавать контейнер как положено. А еще лучше — генерировать неизвлекаемые ключи.
#3 Ответ от NSGrid 2023-01-20 18:23:57
Re: Как сделать контейнер наоборот — неэкспортируемым
Через PFX (если говорить про Винду) можно сделать неэкспортируемым, только при импорте стандартными средствами Винды. Так как при экспорте я не нашел никаких настроек, касаемо изменения свойств. А стандартные средства Винды позволяют импортировать PFX только в реестр или в какую-то директорию, но как импортировать на Рутокен Lite я не нашел.
Также в Панели управления Рутокен я вижу функцию импорта, и, там, кстати, при импорте, тоже есть флаг «Разрешить экспорт закрытого ключа», то есть, как я понимаю, если флаг не ставить, значит он скопируется и будет неэкспортируемым. Но у меня не получается экспортировать его этим методом, так как при попытке экспорта из файла PFX появляется сообщение: Импорт невозможен: импортированы могут быть только сертификаты для ключей RSA».
Интересно, что тут может быть за проблема?
#4 Ответ от Vladimir Ivanov 2023-01-20 18:46:44
- Vladimir Ivanov
- Администратор
- Неактивен
Re: Как сделать контейнер наоборот — неэкспортируемым
NSGrid пишет:
Через PFX (если говорить про Винду) можно сделать неэкспортируемым, только при импорте стандартными средствами Винды. Так как при экспорте я не нашел никаких настроек, касаемо изменения свойств. А стандартные средства Винды позволяют импортировать PFX только в реестр или в какую-то директорию, но как импортировать на Рутокен Lite я не нашел.
Надежда была на то, что КриптоПро может экспортировать ключ в PFX, а потом импортировать в свой контейнер в неэкспортируемом режиме. На стандартные средства Windows расчета не было
NSGrid пишет:
Также в Панели управления Рутокен я вижу функцию импорта, и, там, кстати, при импорте, тоже есть флаг «Разрешить экспорт закрытого ключа», то есть, как я понимаю, если флаг не ставить, значит он скопируется и будет неэкспортируемым. Но у меня не получается экспортировать его этим методом, так как при попытке экспорта из файла PFX появляется сообщение: Импорт невозможен: импортированы могут быть только сертификаты для ключей RSA».
Интересно, что тут может быть за проблема?
Ну это-то как раз не проблема, поскольку панель управления Рутокен не обучена работе с проприетарными форматами контейнеров (КриптоПро CSP). Ну то есть ПУР не может создать контейнер КриптоПро. А импортировать ключи подписи в собственные объекты регулятор не велит
Поэтому представляется наименее затратным сгенерировать новые ключи и выпустить новый сертификат. А старый отозвать конечно
Неэкспортируемые контейнеры крипто про как перенести
Для примера рассмотрим наиболее часто встречающуюся задачу переноса контейнера закрытого ключа из операционной системы Windows под Linux или OS X.
Если в операционной системе Windows сертификат и закрытый ключ могут находится в локальном хранилище Crypto API, то для работы под операционными системами Linux или OS X его нужно импортировать в специальное системное хранилище.

Важно, чтобы у закрытого ключа должен быть установлен флаг «Экспортируемый»
Перенос выполняется в два шага – экспорт контейнера и сертификата, импорт контейнера и установка сертификата в личное хранилище:
В операционной системе Windows скопировать контейнер закрытого ключа можно следующим образом:
- Откройте приложение КриптоПро CSP и перейдите на вкладку Сервис.
- На вкладке выберите команду Скопировать контейнер закрытого ключа.
- Введите пароль для ключевого контейнера и задайте имя ключевого контейнера (например, test).
- Сохраните контейнер на диск или флешку.
- После этого откройте диалог Сертификаты (должна запуститься консоль MMC), перейдите в раздел Личное, Реестр, Сертификаты и экспортируйте сертификат без закрытого ключа с помощью мастера. Сохраните его в файл (например, test.cer).
- Скопируйте контейнер закрытого ключа (директорию /test/ в формате 8.3) и файл сертификата (test.cer) из корня дискеты или флешки в директорию /var/opt/cprocsp/keys/имя_пользователя.
- При этом необходимо проследить чтобы: владельцем файлов был пользователь, в директории с именем которого расположен контейнер (от его имени будет осуществляться работа с ключами); на директорию с ключами были выставлены права, разрешающие владельцу всё, остальным ничего; на файлы были выставлены права, разрешающие владельцу по крайней мере чтение и запись, остальным ничего.
В результате выполнения предыдущей команды должно быть выведено сообщение
PrivateKey Link: Yes. Container: HDIMAGE\\test.000\.
В приведенных выше командах подразумевается один из следующих идентификаторов платформы: ia32 — для 32-разрядных систем Linux; amd64 — для 64- разрядных систем Linux; не указывается — для OS X.
- Как установить и настроить криптопровайдер КриптоПро CSP
- Как установить КриптоАРМ ГОСТ на платформу Microsoft Windows
- Как установить КриптоАРМ ГОСТ на платформу Linux
- Как установить КриптоАРМ ГОСТ на платформу OS X
Ошибка копирования контейнера КриптоПро. Экспортируем неэкспортируемое.

Soft
Автор Михаил На чтение 5 мин Просмотров 1.5к. Опубликовано 03/09/2022 Обновлено 04/09/2022
Похоже, что электронные подписи вошли в нашу жизнь навсегда. И если обычным гражданам ещё можно обойтись шариковой ручкой, то с организациями такое уже не пройдёт. Доступ к программам для сдачи отчетностей и на различные сервисы (такие, например, как клиент-банки) осуществляется только с помощью ЭЦП (электронных цифровых подписей).
Технологии новые, но проблемы старые. Если раньше бухгалтер подписывал за руководителя кучу бумажных документов, то сейчас это происходит с помощью ЭЦП. Последний чаще всего даже не догадывается какие документы он регулярно «подписывает», особенно это касается всяких бюджетных и иных окологосударственных организаций.
В подавляющем большинстве случаев для создания электронных подписей используется программа КриптоПро CSP, с помощью которой заявитель сам генерирует закрытый ключ и подает запрос на создание открытого ключа в удостоверяющий центр. Удостоверяющий центр проверяет заявителя и выпускает сертификат с открытым ключом. После чего остается только «связать» сертификат с закрытым ключом. Всё. Можно подписывать.
Открытый ключ выглядит вот так:

С закрытым ключом сложнее. Задумывалось, что правильный ключ должен выглядеть вот так:

Но стоимость такого «свистка» начинается от 1500 рублей, поэтому у большинства «бюджетников», а это всякие детские сады, школы, библиотеки и т.д., где административно-хозяйственное направление богато на персонал, покупают обычные флешки:

И стоит в разы дешевле и по прямому назначению можно использовать. Покупай умнее, живи веселее!
Спустя год, месяц, неделю обнаруживается:
Ой, а флешку-то я в другой сумочке дома оставила.
— директор Алевтина Игоревна
Кажется сыну в школу отдала.
— бухгалтер Зинаида Степановна
Как не работает? Пустая? Вирусы съели, я ничего не трогала, оно само.
— заместитель директора по гламурным вопросам Оленька
А тут, как назло, последний день, когда надо подписать документы или деньги отправить, поэтому следующим местом хранения ключей обычно становится реестр Windows:

А что? Деньги тратить и никакие флешки вставлять не надо, а то вон у Зинаиды Степановны процессор старый и флешки не держит, а под стол каждый раз ей лезть неудобно. Все подписи можно держать сразу на компьютере, даже на нескольких компьютерах сразу, потом только сиди и выбирай нужную.
Счастье вечным не бывает. Забыли поставить галочку в нужном месте или удостоверяющий центр разрешает только неэкспортируемые ключи, из-за чего они получаются с вечной пропиской в реестре:

Что же делать? Сегодня последний день, последний час, последние минуты, нужно успеть поставить кучу программ, всё настроить, а тут только «Одноклассники» и работают!
Контейнер с ключами в реестре практически никак не защищен и, если у пользователя есть доступ к реестру, то есть и доступ к ключам. Ниже я покажу рабочий пример с двумя компьютерами. Один старый компьютер с Windows XP (32-битной), а второй новый с Windows 10 (64-битной). Итак, задача. Подпись создана на новом компьютере. Сертификат с открытым ключом скопировать получилось, а закрытый ключ нет. Как перенести закрытый ключ на компьютер с Windows XP штатными средствами и без всяких «левых» программ?
Итак. На компьютере с Windows 10 запускаем Редактор реестра:

У нас 64-битная система, поэтому нам нужна ветка:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro\Settings\Users\
Если бы Windows была 32-битная, то нужна была бы другая ветка:
HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\Users\
Переходим. Внутри будет список так называемых SID или идентификаторов безопасности учетных записей. Страшно от терминов, аж жуть. Открываем ту ветку, которая начинается на S-1-5-21… Как правило, она такая одна. Внутри находим ветку Keys и раскрываем. В ней и будет находиться список контейнеров, которые были созданы или скопированы в реестр на этом компьютере.
В нашем примере полный путь выглядит так:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro\Settings\Users\S-1-5-21-133333333-133333333-133333333-1001\Keys\
S-1-5-21-133333333-133333333-133333333-1001 – это и есть SID, на другом компьютере он будет иным, но начало у всех одинаковое.
Выделяем правой кнопкой мыши нужный контейнер, который мы хотим перенести. В открывшемся меню выбираем пункт «Экспортировать»:

Придумываем файлу любое имя и жмём «Сохранить»:

В итоге у нас получится файл реестра с расширением .reg. Переносим его вместе с сертификатом на компьютер с Windows XP:

Все последующие действия будут происходить только на компьютере с Windows XP, второй компьютер нам больше не потребуется.
Сначала нам нужно узнать SID пользователя нашего компьютера.
Запускаем Редактор реестра, и так как Windows XP 32-битная, то переходим в ветку:
HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\Users\
Снова ищем ветку, которая начинается на S-1-5-21… Внутри тоже будут контейнеры с ключами, если их конечно делали раньше, но сейчас нам нужно только точное название SID. Чтобы не ошибиться можно выбрать правой кнопкой любой контейнер и нажать «Экспортировать»:

В следующем окне в самом низу будет полный путь к выбранному контейнеру:

Можно выделить весь путь или только цифры SID и скопировать.
В примере полный путь выглядит так:
HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\Users\S-1-5-21-7777777777-7777777777-7777777777-500\Keys\Илья Муромец
Теперь возвращаемся к полученному ранее файлу реестра. В нём нужно будет отредактировать одну строку.
Для этого выделяем его правой кнопкой мыши и в открывшемся меню выбираем пункт «Изменить»:

Откроется Блокнот:

В самом начале файла находим строку, похожую на эту:
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro\Settings\Users\S-1-5-21-133333333-133333333-133333333-1001\Keys\Идолище Поганое]
В ней нам нужно заменить SID и убрать Wow6432Node\
Должно получиться так:
[HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\Users\S-1-5-21-7777777777-7777777777-7777777777-500\Keys\Идолище Поганое]
Сохраняем изменения. Запускаем этот файл. Соглашаемся на внесение изменений в реестре и всё. Контейнер закрытого ключа установлен. Можно устанавливать сертификат: