КриптоПро: просмотреть сохраненный пароль (пинкод) на контейнер закрытого ключа ЭЦП
Зачастую пользователи не могут вспомнить пароль (пинкод) от контейнера ЭЦП, что неудивительно меняется он раз в год при плановой смене ключа ЭЦП после чего ставится галочка «запомнить пароль» и пароль больше никогда не вводится.Сохраненный пароль можно посмотреть с помощью консольной утилиты csptest, входящей в состав КриптоПро CSP.
Утилита находится в папке с установленным КриптоПро (по умолчанию C:\Program Files\Crypto Pro\CSP\).
Переходим в директорию с программой
cd «C:\Program Files\Crypto Pro\CSP\»
Смотрим имена доступных контейнеров закрытого ключа ЭЦП:
csptest -keyset -enum_cont -fqcn -verifycontext
команда выводит список доступных контейнеров вида: \\.\\
После этого выводим сохраненный пароль для нужного контейнера:
csptest -passwd -showsaved -container «<имя контейнера>«имя>
PS: Данный способ подходит для КриптоПро 3.6 и выше. В КриптоПро 3.0 у утилиты csptest отсутствует опция -showsaved.
PPS: Если этот метод не помогает и у вас аппаратные контейнеры (токены), можно попробовать ввести пароль по умолчанию. Для rutoken это 12345678, для eToken 1234567890, для JaCarta PKI/ГОСТ 11111111 (1234567890 если включена опция обратная совместимость).
PPPS: Весь процесс можно автоматизировать обычным батником,который массово достает пароли из всех доступных ключей. Большое спасибо Александру Санникову за доработку скрипта . Скачать bat-файл можно отсюда. Текст батника:
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
copy «C:\Program Files\Crypto Pro\CSP\csptest.exe» >nul
chcp 1251
if exist %computername%.txt del /f /q %computername%.txt
if exist temp.txt del /f /q temp.txt
set NameK=»»
for /f «usebackq tokens=3,4* delims=\» %%a in (`csptest -keyset -enum_cont -fqcn -verifycontext` ) do (
set NameK=%%a
;csptest -passwd -showsaved -container «!NameK!» >> temp.txt
)
del /f /q csptest.exe
set/a $ai=-1
set/a $bi=2
for /f «usebackq delims=» %%a in («temp.txt») do @(set «$a=%%a»
if «!$a:~,14!»==»AcquireContext» echo:!$a! >> %computername%.txt
if «!$a:~,8!»==»An error» echo:Увы, ключевой носитель отсутствует или пароль не был сохранен. >> %computername%.txt & echo: >> %computername%.txt
if «!$a:~,5!»==»Saved» set/a $ai=1
if !$ai! geq 0 set/a $ai-=1 & set/a $bi-=1 & echo:!$a! >> %computername%.txt
if !$bi!==0 echo: >> %computername%.txt & set/a $bi=2
)
del /f /q temp.txt
EndLocal
echo on
Скачать отдельно утилиту csptest для версий 3.6 3.9 и 4.0 можно отсюда.
Записки 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 часов практики и доступ навсегда.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
![]()
![]()
Или подпишись на наш Телеграм-канал:
Выгрузка из реестра контейнера КриптоПро CSP
В том случае, когда в качестве криптопровайдера используется СКЗИ КриптоПро CSP, а в качестве считывателя используется реестр, контейнеры хранятся в ветке реестра:
- В x32 операционных системах контейнеры находятся в ветке: HKEY_LOCAL_MACHINE\SOFTWARE\CryptoPro\Settings\Users\\Keys\
- В x64 операционных системах контейнеры находятся в ветке: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\CryptoPro\Settings\Users\\Keys\
Если контейнеры требуется перенести вручную на другой ПК, выгрузите ветку реестра.
На том рабочем месте, куда нужно импортировать контейнеры, проверьте разрядность ОС и узнайте SID пользователя.
SID — Идентификатор безопасности пользователя ОС Windows. У каждого пользователя Windows свой SID. Для того, чтобы узнать SID пользователя запустите ОС Windows под его учетной записью, после чего перейдите в командную строку (Пуск → Выполнить → cmd) и введите команду whoami/user. Команда отобразит основные сведения о текущем пользователе, включая его SID
Пример SID: S-1-5-12-12345678-1234567890-1234567890-1234.
После этого откройте с помощью блокнота выгруженный файл реестра в формате .reg, измените SID и, если необходимо, путь к конечной ветке.
После этого загрузите ветку реестра в систему.
Для использования электронной подписи на другом ПК, на нем должен быть установлен СКЗИ КриптоПро CSP, после добавления ветки реестра необходимо установить сертификат.
Практические приёмы работы с Реестром¶
В данном разделе рассматриваются практические примеры работы с реестром:
- Лицензия КриптоПро в реестре [1017]
- Где хранятся ключи(закрытый ключ сертификата) в реестре? [1739]
- Восстановление закрытых ключей с неисправного компьютера
- Извлечение информации из резервной копии реестра
- Доступ к считываетлям (Calais)
- Доверенные узлы
Лицензия КриптоПро в реестре [1017]¶
Лицензия КриптоПро хранится в реестре, её можно оттуда скопировать, либо ввести.
- Перейти в ветку:
КриптоПро 3.6:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer \UserData\S-1-5-18\Products\05480A45343B0B0429E4860F13549069\InstallProperties
КриптоПро 3.9:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer \UserData\S-1-5-18\Products\68A52D936E5ACF24C9F8FE4A1C830BC8\InstallProperties
КриптоПро 4.0:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer \UserData\S-1-5-18\Products\7AB5E7046046FB044ACD63458B5F481C\InstallProperties
КриптоПро 3.0:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18 \Products\0CC4F742C3275A04A9832E2E2CD4BE64\InstallProperties\ProductID
- Открыть двойным нажатием левой кнопки мыши параметр ProductID и прописать в поле Значение серийный номер лицензии (можно с дефисами, можно без). Либо скопировать номер лицензии оттуда.
Где хранятся ключи(закрытый ключ сертификата) в реестре? [1739]¶
Реестр может использоваться в качестве ключевого носителя, другими словами, в него можно скопировать Квалифицированную электронную подпись (КЭП). После копирования закрытые ключи будут находиться:
- для 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-SID>_Classes\VirtualStore\MACHINE\SOFTWARE \[Wow6432Node]\Crypto Pro\Settings\USERS\S-1-5-21-SID>\Keys\
Где SID (идентификатор пользователя) (англ. Security Identifier (SID)) — структура данных переменной длины, которая идентифицирует учетную запись пользователя, группы, домена или компьютера.
Узнать SID пользователя можно через командную строку («Пуск → Выполнить → cmd»), введя команду WHOAMI /USER .

Рис. 23 – Узнать SID пользователя через командную строку
Чтобы скопировать текст из командной строки Windows, необходимо нажать правой кнопкой мыши на заголовок окна консоли и в меню «Свойства» на вкладке «Общие» включить опцию «Выделение мышью».
Восстановление закрытых ключей с неисправного компьютера¶
Обязательно ознакомьтесь с главой Работа с Редактором реестра и разделами:
- Открытие реестра
- Загрузка и выгрузка куста ;
- Права доступа (Разрешения) ;
- Получение полных прав и смена владельца ;
- Работа через утилиту PsExec .
Есть возможность восстановить закрытые ключи сертификата, если они были записаны в реестре компьютера и этот компьютер сломался.
Это можно сделать только в том случае, если жесткий диск в рабочем состоянии и есть возможность его подключить к рабочему системному блоку. Или есть копия папки C:\Windows\System32\config\ .
Если условия выполняются, необходимо проделать следующее:
- Подключить жесткий диск от неработающего компьютера к рабочему системному блоку;
- Скачать утилиту PsExec.exe и скопировать ее в корень диска C .
Открыть редактор реестра с помощью утилиты PsExec.exe (см. раздел Работа через утилиту PsExec ). В командной строке («Пуск → Выполнить → cmd») ввести команду;
C:\PsExec.exe -i -s regedit.exe
- Загрузить куст HKEY_LOCAL_MACHINE\Software (см. раздел Загрузка и выгрузка куста ):
- Перейти в раздел HKEY_LOCAL_MACHINE ;
- Выбрать «Файл → Загрузить куст»;
- В файловом менеджере выбрать соответствующий файл куста с нерабочего компьютера C:\Windows\System32\config\SOFTWARE ;
- Задать произвольное имя загруженному кусту, например, AZAZAZ .
Загрузка куста может занять некоторое время.
- Перейти в раздел, в котором хранятся КЭП ;
- для 32-битной ОС:
HKEY_LOCAL_MACHINE\ASASAS\CryptoPro\Settings\ Users\(идентификатор пользователя)\Keys\(Название контейнера)
- для 64-битной ОС:
HKEY_LOCAL_MACHINE\ASASAS\Wow6432Node\Crypto Pro\Settings \USERS\(идентификатор пользователя)\Keys\(Названиеконтейнера)
В некоторых случаях сертификат попадает сюда:
HKEY_USERS\S-1-5-21-SID>_Classes\VirtualStore\MACHINE\SOFTWARE \[Wow6432Node]\Crypto Pro\Settings\USERS\S-1-5-21-SID>\Keys\
- После того, как найден нужный раздел с ключами:
- Нажать на подраздел keys правой кнопкой мыши и выбрать пункт «Экспортировать» (см. раздел Создание резервной копии реестра (Экспорт) ).
- Выбрать место для сохранения и задать имя файла. Экспортированный файл будет иметь расширение .reg .
- Если требуется, перенести экспортированный файл с расширением .reg на другой компьютер.
- Открыть экспортированный файл с расширением .reg в текстовом редакторе (Notepad++, Блокнот) и изменить в файле идентификатор пользователя (SID) на идентификатор текущего пользователя, для этого:

Рис. 24 – Изменение пути к веткам реестра
- В командной строке («Пуск → Выполнить → cmd») ввести команду WHOAMI /USER (см. рисунок Рис. 23 – Узнать SID пользователя через командную строку ).
Чтобы скопировать текст из командной строки Windows, необходимо нажать правой кнопкой мыши на заголовок окна консоли и в меню «Свойства» на вкладке «Общие» включить опцию «Выделение мышью».
Если разрядность(битность) текущей системы отличается от той, на которой находился контейнер закрытого ключа, то необходимо проверить и при необходимости исправить путь в текстовом редакторе.
- Сохранить изменения в файле и открыть его двойным щелчком мыши (см. раздел Восстановление реестра из резервной копии (Импорт) ). Разрешить внести изменения в реестр.
После этого выполнить установку открытого ключа через Крпто Про CSP (Инструкция по установке личного сертификата).
Перед тем, как вносить изменения в реестр, обязательно создавайте его резервную копию. Подробнее в разделе Создание резервной копии реестра (Экспорт) .
- В конце рекомендуется выгрузить ранее загруженный куст «Файл → Выгрузить куст».
Можно запускать реестр и не используя утилиту PsExec.exe , но тогда придется добавлять загруженным веткам права и разрешения вручную так, как описано в разделе Права доступа (Разрешения) . Это не критично, если речь идет, например, о копировании всего одного контейнера закрытого ключа. Если файлов много, то гораздо быстрее и удобнее использовать PsExec.exe .
Рекомендую всегда держать на готове утилиту PsExec.exe , ее скачивание и копирование занимает не так много времени.
Извлечение информации из резервной копии реестра¶
Резервные копии реестра обычно создаются автоматически каждые десять дней. Сохраняются они в папке:
- C:\Windows\System32\config\RegBack – для Windows 7 и Server 2008;
- C:\Windows\repair – для XP и Server 2003.
Данные папки содержит те же файлы, что и C:\Windows\System32\config\ .
Если, например, из реестра случайно был удален контейнер закрытого ключа, теоретически, есть возможность импортировать куст из резервной копии.
Порядок действия аналогичен, описанному порядку в инструкции Восстановление закрытых ключей с неисправного компьютера . Отличается только файл загружаемого куста C:\Windows\System32\config\RegBack\Software .
Доступ к считываетлям (Calais)¶
Иногда возникает проблема с доступом к считывателям смарт-карт. Она может быть связана с тем, что у текущего пользователя недостаточно прав на следующие ветки:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais\Readers
Подробнее о настройке прав доступа читайте в разделе Права доступа (Разрешения) .
Может возникнуть ситуация, когда текущий пользователь системы даже не будет являться владельцем данных веток реестра, следовательно, у него не будет прав на них. В таком случае, необходимо сначала добавить текущего пользователя во владельцы этих веток, а затем проставить ему соответствующие права, как описано в разделе Права доступа (Разрешения) данного руководства.
Доверенные узлы¶
Если узел не добавляется в надежные узлы, можно добавить его вручную через реестр, для этого необходимо:
- Перейти в ветку HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains ;
- Добавить подраздел с названием домена, например, kontur.ru ;
- В добавленном подразделе создать еще один подраздел с названием субдомена: extern ;
- Добавить параметр DWORD https со значением 2

Рис. 25 – Добавление зон надежных узлов вручную
© Copyright 2015, Dmitry Mazhartsev. Revision 6bfe9488 .
Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: latest
Versions latest Downloads htmlzip epub On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.