Записки IT специалиста
Перенос сертификатов и закрытых ключей CryptoPro хранящихся в реестре
- Автор: Уваров А.С.
- 21.09.2020
КриптоПро один из наиболее широко используемых криптопровайдеров на территории Российской Федерации, он широко используется в системах электронного документооборота, сдачи отчетности и взаимодействия с государственными органами, поэтому встретить его можно практически в любой организации. По этой причине у системных администраторов часто встает вопрос его переноса на другой ПК. А так как криптография является для многих сложной и непонятной областью, то эта простая задача может вызвать некоторые затруднения.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Если вы ранее не сталкивались с криптографией вообще, то рекомендуем прочитать нашу статью: Введение в криптографию. Общие вопросы, проблемы и решения. Здесь мы не будем углубляться в теорию, но приведем некоторый необходимый ликбез.
В повседневной деятельности широко распространено понятие «сертификат», им оперируют все, от сотрудников удостоверяющих центров, то бухгалтеров, работающих с ЭЦП. Часто можно услышать что-то подобное: «нам купили в бухгалтерию новый компьютер, нужно перенести сертификаты». Но если подходить с точки зрения криптографии, то слово «сертификат» в данном случае употребляется неправильно. Вся современная криптография строится вокруг инфраструктуры открытых ключей (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.
![]()
Дальнейшие действия ничем не отличаются от описанных нами в разделе Импорт ключей и сертификатов.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
![]()
![]()
Или подпишись на наш Телеграм-канал:
Хранилище сертификатов для локального компьютера и текущего пользователя
Каждое из системных хранилищ сертификатов имеет следующие типы:
- Хранилище сертификатов локального компьютера Этот тип хранилища сертификатов является локальным для компьютера и глобальным для всех пользователей на компьютере. Это хранилище сертификатов находится в реестре в корневом каталоге HKEY_LOCAL_MACHINE.
- Хранилище сертификатов текущего пользователя Этот тип хранилища сертификатов является локальным для учетной записи пользователя на компьютере. Это хранилище сертификатов находится в реестре в корневом каталоге HKEY_CURRENT_USER.
Сведения о конкретных расположениях реестров хранилищ сертификатов см. в разделе Расположения системных хранилищ.
Имейте в виду, что все хранилища сертификатов текущего пользователя, за исключением хранилища Текущий пользователь или личное, наследуют содержимое хранилищ сертификатов локального компьютера. Например, если сертификат добавляется в хранилище сертификатов доверенных корневых центров сертификации локального компьютера, все хранилища сертификатов доверенных корневых центров сертификации текущего пользователя (с указанным выше предостережением) также содержат этот сертификат.
Проверка подписи драйвера во время установки Plug and Play (PnP) требует, чтобы корневые сертификаты и сертификаты Authenticode, включая тестовые сертификаты, находились в хранилище сертификатов локального компьютера.
Дополнительные сведения о добавлении или удалении сертификатов из системных хранилищ сертификатов см. в разделе CertMgr.
Где в Windows хранятся корневые сертификаты Центров Сертификации (CA)
Если вы задаётесь вопросом, в какой папке хранятся сертификаты в Windows, то правильный ответ в том, что в Windows сертификаты хранятся в реестре. Причём они записаны в виде бессмысленных бинарных данных. Чуть ниже будут перечислены ветки реестра, где размещены сертификаты, а пока давайте познакомимся с программой для просмотра и управления сертификатами в Windows.
В Windows просмотр и управление доверенными корневыми сертификатами осуществляется в программе Менеджер Сертификатов.
Чтобы открыть Менеджер Сертификатов нажмите Win+r, введите в открывшееся поле и нажмите Enter:
certmgr.msc
Перейдите в раздел «Доверенные корневые центры сертификации» → «Сертификаты»:
Здесь для каждого сертификата вы можете просматривать свойства, экспортировать и удалять.
Просмотр сертификатов в PowerShell
Чтобы просмотреть список сертификатов с помощью PowerShell:
Get-ChildItem cert:\LocalMachine\root | format-list
Чтобы найти определённый сертификат выполните команду вида (замените «HackWare» на часть искомого имени в поле Subject):
Get-ChildItem cert:\LocalMachine\root | Where | format-list
Теперь рассмотрим, где физически храняться корневые CA сертификаты в Windows. Сертификаты хранятся в реестре Windows в следующих ветках:
Сертификаты уровня пользователей:
- HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates — содержит настройки сертификатов для текущего пользователя
- HKEY_CURRENT_USER\Software\Policies\Microsoft\SystemCertificates — как и предыдущее расположение, но это соответствует сертификатам пользователей, развёрнутым объектом групповой политики (GPO (Group Policy))
- HKEY_USERS\SID-User\Software\Microsoft\SystemCertificates — соответствует настройке определённых пользовательских сертификатов. У каждого пользователя есть своя ветка в реестре с SID (идентификатор безопасности).
Сертификаты уровня компьютера:
- HKEY_LOCAL_MACHINE\Software\Microsoft\SystemCertificates — содержит настройки для всех пользователей компьютера
- HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\SystemCertificates — как и предыдущее расположение, но это соответствует сертификатам компьютера, развёрнутым объектом групповой политики (GPO (Group Policy))
Сертификаты уровня служб:
- HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Services\ServiceName\SystemCertificates — содержит настройки сертификатов для всех служб компьютера
Сертификаты уровня Active Directory:
- HKEY_LOCAL_MACHINE\Software\Microsoft\EnterpriseCertificates — сертификаты, выданные на уровне Active Directory.
И есть несколько папок и файлов, соответствующих хранилищу сертификатов Windows. Папки скрыты, а открытый и закрытый ключи расположены в разных папках.
Пользовательские сертификаты (файлы):
- %APPDATA%\Microsoft\SystemCertificates\My\Certificates
- %USERPROFILE%\AppData\Roaming\Microsoft\Crypto\RSA\SID
- %USERPROFILE%\AppData\Roaming\Microsoft\Credentials
- %USERPROFILE%\AppData\Roaming\Microsoft\Protect\SID
Компьютерные сертификаты (файлы):
- C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
Рассмотрим теперь где хранятся корневые CA сертификаты веб-браузеров.
Google Chrome
Использует общесистемные доверенные корневые центры сертификации.
Чтобы перейти к списку сертификатов из веб браузера:
Настройки → Приватность и Защита → Безопасность → Управление сертификатами → Просмотр сертификатов → Центры сертификации → Доверенные корневые центры сертификации:
Opera
Чтобы перейти к списку сертификатов из веб браузера: Настройки → Перейти к настройкам браузера → Дополнительно → Безопасность → Ещё → Настроить сертификаты → Доверенные корневые центры сертификации:
Firefox
Приватность и Защита → Сертификаты → Просмотр сертификатов → Центры сертификации:
Для глубокого понимания OpenSSL смотрите также полное руководство: «OpenSSL: принципы работы, создание сертификатов, аудит».
Связанные статьи:
- Как добавить сертификат Центра Сертификации (CA) в доверенные в Windows (99.4%)
- Как включить DNS через HTTPS (DoH) в веб-браузерах (58%)
- Как в Windows 11 поменять веб-браузер по умолчанию (52.5%)
- Почему Windows 10 использует так много трафика и как это исправить (50.8%)
- Программное обеспечение для компьютерной криминалистики на Windows (50.8%)
- 20 сочетаний клавиш Windows, о которых вы могли не знать (RANDOM — 50%)
Как перенести сертификаты в реестре на другой компьютер
Перенос ключей из КриптоПро:
SID пользователя
1. Запустить редактор реестра (Пуск->Выполнить: regedit);
2. Найти ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList;
3. Выбрать SID(имеет вид, например, S-1-5-21-1993962763-492894223-1202660629-6195), и посмотреть ProfileImagePath, в конце строки найдете имя пользователя, которому принадлежит этот SID;
4. Нужно экспортировать ветку HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\USERS\SID_текущего_пользователя\Keys в reg файл, допустим 1.reg. Для 64-битных систем это HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro\Settings\USERS\SID_текущего_пользователя\Keys;
5. В 1.reg меняете через автозамену SID_текущего_пользователя, в Вашем случае, старый на нового;
6. Запускаете reg файл, после этого все готово, но необходимо будет заново установить личные сертификаты для того что бы привязать сертификаты к контейнерам. Если не будет видно контейнеров, то неправильно указали SID_пользователя, т.к. контейнеры видны только под тем пользователем, под SID’ом которого они находятся.
Перенос сертификатов
1. Запустить редактор реестра (Пуск->Выполнить: regedit);
2. Найти ветку реестра HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\My;
3. Нужно экспортировать ветку KEY_CURRENT_USER\Software\Microsoft\SystemCertificates\My в reg файл, допустим 1.reg
ВНИМАНИЕ! Если версии КриптоПро CSP разные то такой способ не пройдет, т.к. в 3,0 крипто-провайдер называется, например, Crypto-Pro GOST R 34.10-2001 KC2 CSP а в 3,6 — Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider и из-за этого возникнут проблемы при обращении к закрытому ключу.
ИЛИ
1. Откройте диспетчер сертификатов: нажмите кнопку Пуск, в поле Поиск введите certmgr.msc и нажмите клавишу ВВОД. Введите пароль администратора или подтверждение пароля, если появится соответствующий запрос.
2. Щелкните правой кнопкой сертификат, который нужно экспортировать, наведите указатель мыши на Все задачи, а затем нажмите Экспорт.
3. В мастере экспорта сертификатов щелкните Далее.
4. Если сертификат предполагается перенести на другой компьютер, щелкните Да, экспортировать закрытый ключ, в противном случае щелкните Нет, не экспортировать закрытый ключ, а затем нажмите Далее. (Эта возможность появляется, если только закрытый ключ помечен как экспортируемый и имеется доступ к закрытому ключу).
5. Выберите нужный формат и нажмите Далее.
