Как запустить файл реестра криптопро

Обновлено: 05.07.2024

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

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти .

Введение

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

  1. Перенести или скопировать контейнер закрытого ключа через стандартную оснастку CryptoPro в панели управления. Это самый простой и быстрый способ, если у вас не много сертификатов и ключей. Если же их несколько десятков, а это не такая уж и редкость, то такой путь вам не подходит.
  2. Скопировать сертификаты и ключи непосредственно через перенос самих исходных файлов и данных, где все это хранится. Объем работы одинаков и для 5 и для 50-ти сертификатов, но требуется больше усилий и знаний.

Я опишу оба этих способа, но подробно остановлюсь именно на втором способе. В некоторых ситуациях он является единственно возможным.

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

Копирование закрытого ключа через оснастку КриптоПро

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

Копирование закрытого ключа сертификата через оснастку КриптоПро

Далее вы выбираете текущий контейнер, который хотите скопировать. Это может быть либо токен, либо реестр компьютера. Затем новое имя и новое расположение контейнера. Опять же, это может быть как реестр, так и другой токен.

Выбор контейнер для экспорта

Ошибка копирования контейнера

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

Ошибка копирования контейнера

Ошибка копирования контейнера. У вас нет разрешений на экспорт ключа, потому что при создании ключа не был установлен соответствующий флаг. Ошибка 0x8009000B (-2146893813) Ключ не может быть использован в указанном состоянии. Либо вы просто не сможете его выбрать для копирования, если у вас последняя версия CryptoPro. Он будет неактивен:

Неэкспортируемый контейнер

Если получили такую ошибку, то для вас этот способ переноса не подходит. Можно сразу переходить к следующему. Отдельно расскажу, как скопировать сертификат и закрытый ключ к нему в файл, чтобы перенести на другой компьютер без использования токена. Делаем это там же на вкладке Сервис в оснастке CryptoPro. Нажимаем Посмотреть сертификаты в контейнере.

Посмотреть список сертификатов в системе

Выбираем необходимый сертификат и нажимаем Посмотреть свойства сертификата.

Выбор сертификата

Далее переходим на вкладку Состав в информации о сертификате и нажимаем Копировать в файл.

Сохранение сертификата КриптоПро в файл

Если у вас после слов "Экспортировать закрытый ключ вместе с сертификатом" нет возможности выбрать ответ "Да, экспортировать закрытый ключ", значит он не помечен как экспортируемый и перенести его таким способом не получится. Можно сразу переходить к другому способу, который описан ниже.

Невозможно экспортировать закрытый ключ

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

Формат экспортируемого ключа

Укажите какой-нибудь пароль и запомните его! Без пароля продолжить нельзя. В завершении укажите имя файла, куда вы хотите сохранить закрытый ключ. Теперь вам нужно скопировать сам сертификат. Только что мы копировали закрытый ключ для него. Не путайте эти понятия, это разные вещи. Опять выбираете этот же сертификат в списке из оснастки Crypto Pro, жмёте Копировать в файл, экспортировать БЕЗ закрытого ключа. И выбираете файл формата .CER.

Перенос сертификата

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

Вам достаточно перенести эти 2 файла на другой компьютер и кликнуть по каждому 2 раза мышкой. Откроется мастер по установке сертификатов. Вам нужно будет выбрать все параметры по умолчанию и понажимать Далее. Сертификат и контейнер закрытого ключа к нему будут перенесены на другой компьютер. Я описал первый способ переноса в ручном режиме. Им можно воспользоваться, если у вас немного сертификатов и ключей. Если их много и руками по одному переносить долго, то переходим ко второму способу.

Массовый перенос ключей и сертификатов CryptoPro с компьютера на компьютер

В интернете достаточно легко находится способ переноса контейнеров закрытых ключей КриптоПро через копирование нужной ветки реестра, где это все хранится. Я воспользуюсь именно этим способом. А вот с массовым переносом самих сертификатов у меня возникли затруднения и я не сразу нашел рабочий способ. Расскажу о нем тоже. Для дальнейшей работы нам надо узнать SID текущего пользователя, у которого мы будем копировать или переносить сертификаты с ключами. Для этого в командной строке выполните команду:

Как узнать SID пользователя

В данном случай user - имя учетной записи, для которой узнаем SID. Далее скопируем контейнеры закрытых ключей в файл. Для этого на компьютере открываем редактор реестра (regedit.exe) и переходим в ветку:

где S-1-5-21-4126888996-1677807805-1843639151-1000 - SID пользователя, у которого копируем сертификаты. Выбираем папку Keys и экспортируем ее. Этот путь актуален для 64-х битных систем - Windows 7, 8, 10. В 32-х битных путь может быть немного другой. Я специально не проверял, но поиском по реестру вы при желании найдете его.

Массовый перенос закрытых ключей сертификатов с компьютера на компьютер

Сохраняем ветку реестра в файл. В ней хранятся закрытые ключи. Теперь нам нужно скопировать сразу все сертификаты. В Windows 7, 8 и 10 они живут в директории - C:\Users\user\AppData\Roaming\Microsoft\SystemCertificates\My. Сохраняйте эту директорию. Для переноса ключей и сертификатов нам надо скопировать на другой компьютер сохраненную ветку реестра и директорию с сертификатами My.

После того, как перенесли файлы со старого компьютера на новый, открываем файл с веткой реестра в текстовом редакторе и меняем там SID пользователя со старого компьютера на SID пользователя нового компьютера. Можно прям в блокноте это сделать поиском с заменой.

Замена SID пользователя

После этого запускаем .reg файл и вносим данные из файла в реестр. Теперь скопируйте папку My с сертификатами в то же место в профиле нового пользователя. На этом перенос сертификатов и контейнеров закрытых ключей КриптоПро завершен. Можно проверять работу. Я не раз пользовался этим методом, на текущий момент он 100% рабочий. Написал статью, чтобы помочь остальным, так как сам не видел в интернете подробной и понятной с первого раза статьи на эту тему. Надеюсь, моя таковой получилась.

КриптоПро CSP ошибка 0x80090010 Отказано в доступе

Иногда после переноса контейнеров закрытых ключей через экспорт - импорт ветки реестра с ключами можно увидеть ошибку доступа к контейнерам. Вроде бы все на месте, ключи есть в реестре. Их можно увидеть в останстке CryptoPro, но не получается прочитать. При попытке это сделать возникает ошибка:

КриптоПро CSP ошибка 0x80090010 Отказано в доступе

Права доступа в реестре на ключи

Убедитесь так же, что новые права наследовались на дочерние ветки с самими ключами. Обычно это так, но перепроверить на всякий случай непомешает. После этого ошибка с доступом к контейнеру закрытого ключа исчезнет.

Часто задаваемые вопросы по теме статьи (FAQ)

Можно ли перенести сертификат, который находится на токене и защищен от копирования?

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

Безопасно ли хранить сертификаты в реестре?

Это не безопасно и в общем случае я не рекомендую это делать. USB токены для хранения сертификатов придуманы не просто так. Они реально защищают сертификаты от несанкционированного копирования. Если у вас нет объективной необходимости копировать сертификаты в реестр, лучше этого не делать. Если вам нужно сделать бэкап сертификата на случай поломки токена, то просто скопируйте его в зашифрованный архив и сохраните на флешке.

Подойдет ли предложенный способ копирования сертификатов CryptoPro для VipNet?

Нет, не подойдет. В статье описан способ переноса сертификатов CryptoPro. Другие криптопровайдеры хранят сертификаты по-другому. Универсального способа для всех не существует.

Есть ли какой-то очень простой способ скопировать сертификаты crypto pro? То, что описано в статье слишком сложно для меня.

Да, есть статья на сайте контура, в ней ссылка на утилиту для копирования контейнеров Certfix. Можете воспользоваться ей.

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

Если лицензия в сертификат не встроена, нажмите здесь, чтобы открыть инструкцию о том, что делать

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

Если бланк найти не удается, то:

  1. Запустите редактор реестра. Для этого выберите «Пуск» → «Выполнить» → введите «regedit» и нажмите на клавиатуре «Enter».
  2. Выберите ветку реестра в зависимости от версии КриптоПро:
    • для КриптоПро 4.0: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\7AB5E7046046FB044ACD63458B5F481C\InstallProperties;
    • для КриптоПро 5.0: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\08F19F05793DC7340B8C2621D83E5BE5\InstallProperties.
  3. Откройте параметр «ProductID» и посмотрите или пропишите в поле «Значение» серийный номер лицензии

Серийный номер можно прописать как с дефисами, так и без.

Установка требует прав администратора в системе Microsoft Windows. На время установки отключите антивирусную программу.

Порядок переустановки КриптоПро


  1. Удалите КриптоПро. Для этого зайдите в «Панель управления» → «Программы и компоненты» и удалите КриптоПро.
  2. Для корректного и полного удаления программы скачайте и запустите утилиты«cspclean»:
    1. Перейдите в раздел Программное обеспечение и выберите «Обязательные программы» → «КриптоПро ».
    2. Скачайте и запустите «Утилиту очистки следов установки Крипто Про CSP » (файл cspclean.exe).


    После запуска утилиты появится окно с предупреждением, что все продукты компании КриптоПро будут уничтожены. Нажмите «Да».


    При использовании утилиты сspclean с сайта Контур.Экстерн удаление контейнеров из реестра не происходит. Если сspclean была самостоятельно сохранена с сайта Крипто-Про, то при запуске утилиты может появиться запрос на удаление контейнеров из реестра, который необходимо отклонить.

    Перезагрузите компьютер. После этого установите КриптоПро с помощью веб-диска . После установки обязательно перезагрузите компьютер.

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

    У Вас есть архив ключа (Рис.1) - его нужно распаковать, скопировать ключ (Рис.2) и сохранить на флешку (Рис.3). Важно! Папку не переименовываем и в подпапку не переносим.

    Архив ключа. При открытии архива возникнет окно, жмем “Извлечь”, чтобы распаковать.

    Рис.1 - Архив ключа. При открытии архива возникнет окно, жмем “Извлечь”, чтобы распаковать.

    Распаковали файл, открываем папку, выделенную папку копируем и вставляем в хранилище флешки.

    Рис. 2 - Распаковали файл, открываем папку, выделенную папку копируем и вставляем в хранилище флешки.

    Сохранили папку на флешку. Важно! Папку не переименовываем и в подпапку не переносим.

    Рис.3 - Сохранили папку на флешку. Важно! Папку не переименовываем и в подпапку не переносим.

    Для установки ключа в Реестр пользователя, открываем программу КриптоПро CSP - вкладка "Сервис" - "Скопировать" (Рис.4)- "Обзор" (Рис.5)- (выбираем нужный ключ с флешки) (Рис.6)- жмем "Далее" в следующем окне выбираем “Реестр”(Рис.7) - возникнет окно “Ввести пароль для контейнера”.

    Очень важно! В конце будете указывать пароль от контейнера НЕ ВОССТАНАВЛИВАЕТСЯ, при этом поле можно оставить пустым.(рис.8)

    Для установки ключа в Реестр пользователя, открываем программу КриптоПро CSP - вкладка

    Рис.4 - Для установки ключа в Реестр пользователя, открываем программу КриптоПро CSP - вкладка "Сервис"

    В появившемся окне, нажимаем на кнопку “Обзор”

    Рис.5 - В появившемся окне, нажимаем на кнопку “Обзор”

    Выбираем нужный ключ с флешки.

    Рис.6 - Выбираем нужный ключ с флешки.

    В возникшем окне выбираем “Реестр”, этим сохраняем ключ на локальный компьютер

    Рис.7 - В возникшем окне выбираем “Реестр”, этим сохраняем ключ на локальный компьютер.

    Возникнет окно “Ввести пароль для контейнера”

    Рис. 8 - Возникнет окно “Ввести пароль для контейнера”.

    Очень важно! Пароль от контейнера НЕ ВОССТАНАВЛИВАЕТСЯ, при этом поле можно оставить пустым.

    Практические приёмы работы с Реестром

    В данном разделе рассматриваются практические примеры работы с реестром:

    Лицензия КриптоПро в реестре [1017]

    Лицензия КриптоПро хранится в реестре, её можно оттуда скопировать, либо ввести.

    КриптоПро 3.6:

    КриптоПро 3.9:

    КриптоПро 4.0:

    КриптоПро 3.0:

    1. Открыть двойным нажатием левой кнопки мыши параметр ProductID и прописать в поле Значение серийный номер лицензии (можно с дефисами, можно без). Либо скопировать номер лицензии оттуда.

    Где хранятся ключи(закрытый ключ сертификата) в реестре? [1739]

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

    • для 32-битной ОС:
    • для 64-битной ОС:
    • В некоторых случаях сертификат попадает сюда:

    Где SID (идентификатор пользователя) (англ. Security Identifier (SID)) — структура данных переменной длины, которая идентифицирует учетную запись пользователя, группы, домена или компьютера.

    Узнать SID пользователя можно через командную строку («Пуск → Выполнить → cmd»), введя команду WHOAMI /USER .

    Рис. 23 – Узнать SID пользователя через командную строку

    Рис. 23 – Узнать SID пользователя через командную строку

    Чтобы скопировать текст из командной строки Windows, необходимо нажать правой кнопкой мыши на заголовок окна консоли и в меню «Свойства» на вкладке «Общие» включить опцию «Выделение мышью».

    Восстановление закрытых ключей с неисправного компьютера

    Обязательно ознакомьтесь с главой :ref:`work-whith-regedit` и разделами:

    Есть возможность восстановить закрытые ключи сертификата, если они были записаны в реестре компьютера и этот компьютер сломался.

    Это можно сделать только в том случае, если жесткий диск в рабочем состоянии и есть возможность его подключить к рабочему системному блоку. Или есть копия папки C:\Windows\System32\config\ .

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

    1. Подключить жесткий диск от неработающего компьютера к рабочему системному блоку;
      утилиту PsExec.exe и скопировать ее в корень диска C .

    Открыть редактор реестра с помощью утилиты PsExec.exe (см. раздел :ref:`psexec` ). В командной строке («Пуск → Выполнить → cmd») ввести команду;

    Загрузить куст HKEY_LOCAL_MACHINE\Software (см. раздел :ref:`hive-load` ):

    • Перейти в раздел HKEY_LOCAL_MACHINE ;
    • Выбрать «Файл → Загрузить куст»;
    • В файловом менеджере выбрать соответствующий файл куста с нерабочего компьютера C:\Windows\System32\config\SOFTWARE ;
    • Задать произвольное имя загруженному кусту, например, AZAZAZ .
    1. После того, как найден нужный раздел с ключами:
    • Нажать на подраздел keys правой кнопкой мыши и выбрать пункт «Экспортировать» (см. раздел :ref:`export` ).
    • Выбрать место для сохранения и задать имя файла. Экспортированный файл будет иметь расширение .reg .
    • Если требуется, перенести экспортированный файл с расширением .reg на другой компьютер.
    1. Открыть экспортированный файл с расширением .reg в текстовом редакторе (Notepad++, Блокнот) и изменить в файле идентификатор пользователя (SID) на идентификатор текущего пользователя, для этого:

    Рис. 24 – Изменение пути к веткам реестра

    Рис. 24 – Изменение пути к веткам реестра

    • В командной строке («Пуск → Выполнить → cmd») ввести команду WHOAMI /USER (см. рисунок :ref:`registry-023` ).

    Чтобы скопировать текст из командной строки Windows, необходимо нажать правой кнопкой мыши на заголовок окна консоли и в меню «Свойства» на вкладке «Общие» включить опцию «Выделение мышью».

    1. Сохранить изменения в файле и открыть его двойным щелчком мыши (см. раздел :ref:`import` ). Разрешить внести изменения в реестр.
    После этого выполнить установку открытого ключа через Крпто Про CSP (Инструкция по установке личного сертификата).

    Перед тем, как вносить изменения в реестр, обязательно создавайте его резервную копию. Подробнее в разделе :ref:`export` .

    1. В конце рекомендуется выгрузить ранее загруженный куст «Файл → Выгрузить куст».

    Можно запускать реестр и не используя утилиту PsExec.exe , но тогда придется добавлять загруженным веткам права и разрешения вручную так, как описано в разделе :ref:`regedit-rules` . Это не критично, если речь идет, например, о копировании всего одного контейнера закрытого ключа. Если файлов много, то гораздо быстрее и удобнее использовать PsExec.exe .

    Рекомендую всегда держать на готове утилиту PsExec.exe , ее скачивание и копирование занимает не так много времени.

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

    Резервные копии реестра обычно создаются автоматически каждые десять дней. Сохраняются они в папке:

    • C:\Windows\System32\config\RegBack – для Windows 7 и Server 2008;
    • C:\Windows\repair – для XP и Server 2003.

    Данные папки содержит те же файлы, что и C:\Windows\System32\config\ .

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

    Порядок действия аналогичен, описанному порядку в инструкции :ref:`kep-recovery` . Отличается только файл загружаемого куста C:\Windows\System32\config\RegBack\Software .

    Доступ к считываетлям (Calais)

    Иногда возникает проблема с доступом к считывателям смарт-карт. Она может быть связана с тем, что у текущего пользователя недостаточно прав на следующие ветки:

    Подробнее о настройке прав доступа читайте в разделе :ref:`regedit-rules` .

    Может возникнуть ситуация, когда текущий пользователь системы даже не будет являться владельцем данных веток реестра, следовательно, у него не будет прав на них. В таком случае, необходимо сначала добавить текущего пользователя во владельцы этих веток, а затем проставить ему соответствующие права, как описано в разделе :ref:`regedit-rules` данного руководства.

    Если узел не добавляется в надежные узлы, можно добавить его вручную через реестр, для этого необходимо:

    Читайте также: