Записки IT специалиста
Перенос сертификатов и закрытых ключей CryptoPro хранящихся в реестре
- Автор: Уваров А.С.
- 21.09.2020
КриптоПро один из наиболее широко используемых криптопровайдеров на территории Российской Федерации, он широко используется в системах электронного документооборота, сдачи отчетности и взаимодействия с государственными органами, поэтому встретить его можно практически в любой организации. По этой причине у системных администраторов часто встает вопрос его переноса на другой ПК. А так как криптография является для многих сложной и непонятной областью, то эта простая задача может вызвать некоторые затруднения.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Если вы ранее не сталкивались с криптографией вообще, то рекомендуем прочитать нашу статью: Введение в криптографию. Общие вопросы, проблемы и решения. Здесь мы не будем углубляться в теорию, но приведем некоторый необходимый ликбез.
В повседневной деятельности широко распространено понятие «сертификат», им оперируют все, от сотрудников удостоверяющих центров, то бухгалтеров, работающих с ЭЦП. Часто можно услышать что-то подобное: «нам купили в бухгалтерию новый компьютер, нужно перенести сертификаты». Но если подходить с точки зрения криптографии, то слово «сертификат» в данном случае употребляется неправильно. Вся современная криптография строится вокруг инфраструктуры открытых ключей (PKI), которая подразумевает наличие у каждого участника ключевой пары: открытого и закрытого ключа.
Закрытый ключ является секретным, с его помощью мы можем подписывать документы, шифровать информацию и т.д. и т.п. Закрытый ключ Усиленной квалифицированной электронной подписи (УКЭП) равнозначен нотариально заверенной подписи и его попадание в чужие руки может привести к самым тяжелым последствиям.
Открытый ключ, дополненный некоторыми дополнительными данными, выпускается в форме сертификата и является публично доступным, с его помощью можно проверить действительность цифровой подписи, выполненной закрытым ключом или убедиться в подлинности участника обмена электронными документами.
Поэтому, когда мы говорим о переносе «сертификатов», то подразумеваем необходимость перенести ключевую пару: закрытый ключ и сертификат, перенос одних только сертификатов не принесет успеха, криптография на новом узле работать не будет.
Выяснив этот момент, перейдем к хранилищам закрытых ключей. КриптоПро предполагает в таком качестве токены, флеш-накопители и системный реестр. Токены являются наиболее защищенными устройствами, извлечь закрытый ключ из них невозможно, и вы можете не опасаться несанкционированного копирования (для этого закрытый ключ должен быть помечен как неэкспортируемый). Флеш-накопители представляют некий компромисс между безопасностью и мобильностью, а реестр удобен в тех случаях, когда на одном ПК нужно одновременно работать с большим количеством ключей. И именно с ним связаны определенные сложности при переносе на другой узел.
Экспорт ключей и сертификатов
Для того, чтобы правильно экспортировать закрытые ключи, нам нужно выяснить идентификатор безопасности ( SID) текущего пользователя (который работает с ЭЦП), это можно сделать командной:
wmic useraccount where name='%username%' get sid
![]()
Затем откроем редактор реестра и перейдем в ветку для 32-битных систем:
HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\Users
для 64-битных систем:
\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Crypto Pro\Settings\Users
Найдем и раскроем раздел с SID текущего пользователя и экспортируем оттуда ветку Keys.
![]()
Обратите внимание, что данная ветка содержит закрытые ключи, поэтому следует принять все меры безопасности и не передавать файл экспорта по открытым каналам связи и вообще исключить к нему несанкционированный доступ посторонних лиц.
После чего скопируем все сертификаты, расположенные по пути
%USERPROFILE%\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates
Это открытые ключи, никакой секретности они не представляют, поэтому просто копируем их любым доступным способом.
Импорт ключей и сертификатов
Прежде всего установим на новый узел КриптоПро, обратите внимание, что переносить ключи и сертификаты следует между одинаковыми версиями. В противном случае либо обновите версию КриптоПро на старой системе, либо установите старую версию на новой и обновите ее уже после переноса ключевых пар.
Затем снова узнаем SID пользователя, который будет работать с ЭЦП, если это текущий пользователь, то снова выполните:
wmic useraccount where name='%username%' get sid
В противном случае:
wmic useraccount where name='Name' get sid
где Name — имя пользователя.
После чего откройте на редактирование файл реестра с экспортированными закрытыми ключами и замените в нем все вхождения старого SID на SID нового пользователя.
![]()
Сохраните файл и импортируйте его в реестр. Закрытые ключи перенесены, файл переноса в целях безопасности следует удалить.
Следующим шагом скопируйте сохраненные сертификаты в
%USERPROFILE%\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates
После чего можно устанавливать и настраивать приложения работающие с криптографией, все будет работать.
Как быть если доступ к старой системе невозможен?
Теория — это хорошо, но практика может подкинуть самые неожиданные ситуации. Как быть, если доступ к старой системе невозможен? Скажем вышла из строя материнская плата или серьезно повреждена операционная система?
Все что нам нужно в таком случае — это доступ к файловой системе старой системы. Вы можете как напрямую подключить жесткий диск к новой системе, так и загрузиться при помощи консоли восстановления или любого более продвинутого инструмента, скажем MSDaRT.
С копированием сертификатов проблемы возникнуть не должно, их хранилище простая папка на диске, а вот с хранилищем закрытых ключей в реестре немного сложнее. Но не будем забывать, что системный реестр тоже хранится в файлах на диске. Вам следует любым доступным образом скопировать файл SOFTWARE из C:\Windows\System32\config
![]()
Затем на целевой системе откройте редактор реестра, перейдите в раздел HKEY_LOCAL_MACHINE и через Файл — Загрузить куст подключите скопированный из старой системы раздел реестра. Дайте ему осмысленное имя, скажем OLD_SOFTWARE.
![]()
После чего пройдите в раздел с закрытыми ключами (с учетом новой точки монтирования) и выполните экспорт ветки Keys.
![]()
Дальнейшие действия ничем не отличаются от описанных нами в разделе Импорт ключей и сертификатов.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
![]()
![]()
Или подпишись на наш Телеграм-канал:
Как достать сертификат закрытого ключа ЭЦП с реестра?
Собственно случилось горе, комп уронил Windows XP.
Ну и как всегда все умные и все ЭЦП записаны в реестр, на других носителях их просто нет. часть была установлена вовсе с неделю назад..
Спасибо Сбис ЭЦП получены по каналу связи ну и .. установлены. О резервном копировании все слышали, но никто не пользуется.
Все данные восстановить удалось, но вот незадача осталась папка с реестром от старой системы C:\Windows\System32\Config
что-то мне подсказывает что оттуда можно достать эти закрытые сертификаты ключа, ну и записать на флешку например, но как это сделать и где они там болтаются не понятно.
У кого есть соображения? Никто таким не страдал ниразу
Жить хорошо. а богато жить ещё лучше icq: 321674212 tel: +7 9О9 5О5 В6В6
2 Ответ от anod 19.02.2014 00:23:45 (10 лет назад)
- anod
- И жить хорошо и жизнь хороша
- Неактивен
- Стаж: 14 лет 6 месяцев
- Сообщений: 3 822
- Репутация: [ 64 | 7 ]
Re: Как достать сертификат закрытого ключа ЭЦП с реестра?
Попробовать восстановит виндовс установкой поверх далее крипто про
Сисадмин
Macbook Air m1/8/256
Macbook pro 15″ Retina 2014 i7/16gb/256gb ssd
Xeon E5 2680v2/16gb/256ssd nvme/RX 560 4gb/hackintosh Majave
i5-10600K/32gb/2tb ssd nvme/RX 5700XT 8gb/hackintosh Monterey
m3788 > me45 > 6230i > 3gs > 4s > Amoi 821 > 828 > Elephone p6000 > Redmi Note 3 pro > 5 plus > Note 7 > note 9 pro > 12t pro
3 Ответ от mixall 19.02.2014 00:24:06 (10 лет назад)
Re: Как достать сертификат закрытого ключа ЭЦП с реестра?
ERD regedit, registry editor pe, поковыряться в реестре можно
У меня уже давно другой номер телефона.
4 Ответ от anod 19.02.2014 00:36:50 (10 лет назад)
- anod
- И жить хорошо и жизнь хороша
- Неактивен
- Стаж: 14 лет 6 месяцев
- Сообщений: 3 822
- Репутация: [ 64 | 7 ]
Re: Как достать сертификат закрытого ключа ЭЦП с реестра?
Изучил эту тему. Сделал так:
1. Запустил regedit под sysytem
2. Импортировал старый реестр в ветку — HKEY_LOCAL_MACHINE
3. Экспортировал старые ключи — пошел немного глубже сделал экспорт нужных ключей.
4. Не совсем въехал как получилось но SSID получился одинаковый поэтому ничего не менял
5. В Far-e заменой исправил название старого реестра который прицепил к новому HKEY_LOCAL_MACHINE\old_reestr на HKEY_LOCAL_MACHINE\SOFTWARE
6. Сохранил, запустил.
7. Все работает.
Здравствуйте.
На старом жёстком диске умера винда (но сами файлы реестра остались (windows\system32\config\software)). Ключи хранились только в реестре, копий нет. Вопрос: можно ли скопировав ветки реестра (HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\USERS\S-1-5-21-43413881-1930243565-692992123-2783\Keys\Имя контейнера) из файла реестра старой винды в новую таким образом перенести ключи в реестр новой винды ?
ПыСы
Копировать хочу так: Открываем regedit
щелкаем на HKEY_LOCAL_MACHINE и жмем файл=>загрузить куст, указываем «D:\windows\system32\config\software» c испорченного Windows, пишем любое название для ветки, копируем что нужно, далее файл=>выгрузить куст
Отредактировано anod ( 19.02.2014 00:37:56 , 10 лет назад)
Сисадмин
Macbook Air m1/8/256
Macbook pro 15″ Retina 2014 i7/16gb/256gb ssd
Xeon E5 2680v2/16gb/256ssd nvme/RX 560 4gb/hackintosh Majave
i5-10600K/32gb/2tb ssd nvme/RX 5700XT 8gb/hackintosh Monterey
m3788 > me45 > 6230i > 3gs > 4s > Amoi 821 > 828 > Elephone p6000 > Redmi Note 3 pro > 5 plus > Note 7 > note 9 pro > 12t pro
Выгрузка из реестра контейнера КриптоПро CSP
Если контейнеры требуется перенести вручную на другой ПК, выгрузите ветку реестра. Для этого откройте редактор реестра regedit.exe и перейти в необходимую ветку. В том случае, когда в качестве криптопровайдера используется СКЗИ КриптоПро CSP, а в качестве считывателя используется реестр, контейнеры хранятся в ветке реестра:
- В x32 операционных системах контейнеры находятся в ветке: HKEY_LOCAL_MACHINE\SOFTWARE\CryptoPro\Settings\Users\\Keys\
- В x64 операционных системах контейнеры находятся в ветке: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\CryptoPro\Settings\Users\\Keys\
Выберите папку Keys и выполните её экспорт.
Импорт контейнера в реестр
На том рабочем месте, куда нужно импортировать контейнеры, проверьте разрядность ОС и узнайте SID пользователя.
SID — Идентификатор безопасности пользователя ОС Windows. У каждого пользователя Windows свой SID. Для того, чтобы узнать SID пользователя запустите ОС Windows под его учетной записью, после чего перейдите в командную строку (Пуск → Выполнить → cmd) и введите команду whoami/user. Команда отобразит основные сведения о текущем пользователе, включая его SID
Пример SID: S-1-5-12-12345678-1234567890-1234567890-1234.
После этого откройте с помощью блокнота выгруженный файл реестра в формате .reg, измените SID и, если необходимо, путь к конечной ветке.
После этого загрузите ветку реестра в систему. Для импорта сохраненного файла реестра дважды кликните левой кнопкой мыши по файлу с расширением REG или воспользуйтесь альтернативным способом:
- Откройте редактор реестра (regedit.exe).
- В меню Файл выберите пункт Импортировать.
- В открывшемся окне найдите файл для импорта, выделите его и нажмите кнопку Открыть.
Для использования электронной подписи на другом ПК, на нем должен быть установлен СКЗИ КриптоПро CSP, после добавления ветки реестра необходимо установить сертификат.
Переносим неэкспортируемые контейнеры Крипто-ПРО
Иногда случается так что необходимо перенести клиент-банк или другое разнообразное бухгалтерское и не очень ПО с одного компьютера на другой. В том случае когда в качестве криптопровайдера выступает СКЗИ Крипто-ПРО обычно проблем не возникает — СКЗИ имеет штатные средства копирования ключей. Но не всегда все гладко — в том случае, когда ключевой контейнер находится в реестре Windows, и при генерации ключа не была выставлена галочка «Пометить ключ как экспортируемый» то при попытке скопировать куда-либо этот ключ Крипто-ПРО будет ругаться и не скопирует ключ.
Из этой ситуации есть очень простой выход — выгружаем ветку реестра HKLM\SOFTWARE\CryptoPro\Settings\Users\ \Keys\(в x64 операционках контейнеры лежат в HKLM\SOFTWARE\Wow6432Node\CryptoPro\Settings\Users\ \Keys\), а на том ПК куда необходимо импортировать смотрим разрядность ОС\SID пользователя, блокнотом правим .reg файл(меняем SID и, если необходимо, путь к конечной ветке), и импортируем его в реестр.
Также этим методом очень удобно бекапить и клонировать ключи тогда, когда их много(например в аутсорс-бухгалтериях).
P.S. Не забывайте после переноса установить сертификаты из криптоконтейнеров в «Личные».
В крипто-про на контейнеры можно ставить пин-код.
А так же при вводе этого пин-кода можно поставить галочку «сохранить» — и в дальнейшем его вводить не придётся.
Иногда после этого пин-код благополучно забывают (что и произошло у нас в компании).
При копировании вышеописанным методом, контейнер остаётся защищён пин-кодом — а вот «сохранение» этого пин-кода не переносится на новый компьютер.
Что можно сделать в таком случае?
Если исходный компьютер ещё жив — заходим в панель управления -> КриптоПро CSP -> Сервис -> Скопировать
Выбираем нужный контейнер (кнопка «обзор» или «по сертификату», как проще найти) -> Далее -> вводим название нового контейнера -> далее -> устанавливаем на него новый пароль. Или не устанавливаем.
И вот после этого уже копируем ветку реестра на новый комп.
Кстати, что бы не мучаться с подменой SID — можно копировать сертификаты в контейнер компьютера а не пользователя, тогда они будут храниться тут: