Перенос контейнеров закрытых ключей и сертификатов CryptoPro

Материал из support.qbpro.ru

ВВЕДЕНИЕ

Перенести закрытые ключи и сертификаты КриптоПро на другой компьютер можно двумя способами:

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

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

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

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

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

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

Если получили такую ошибку, то для вас этот способ переноса не подходит. Можно сразу переходить к следующему.

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

Запускаем Internet Explorer, открываем его настройки и переходим на вкладку Содержание. Там нажимаем на Сертификаты.
Perenos-sertificatov-03.png

Выбираем нужный сертификат и нажимаем Экспорт.
Perenos-sertificatov-04.png

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

  • Можно сразу переходить к другому способу, который описан ниже.

Perenos-sertificatov-05.png

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

Укажите какой-нибудь пароль и запомните его! Без пароля продолжить нельзя. В завершении укажите имя файла, куда вы хотите сохранить закрытый ключ. Теперь вам нужно скопировать сам сертификат. Только что мы копировали закрытый ключ для него. Не путайте эти понятия, это разные вещи. Опять выбираете этот же сертификат в списке, жмите Экспорт и выберите файл формата .CER.
Perenos-sertificatov-06.png

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

В итоге у вас должны получиться 2 файла с расширениями:

   [*].pfx
   [*].cer

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

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

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

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

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

wmic useraccount where name='zerox' get sid

Perenos-sertificatov-07.png

В данном случай zerox — имя учетной записи, для которой узнаем SID.

Далее скопируем контейнеры закрытых ключей в файл. Для этого на компьютере открываем редактор реестра и переходим в ветку:

\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Crypto Pro\Settings\Users\S-1-5-21-4126079715-2548991747-1835893097-1000\Keys

где S-1-5-21-4126079715-2548991747-1835893097-1000 — SID пользователя, у которого копируем сертификаты. Выбираем папку Keys и экспортируем ее.
Perenos-sertificatov-08.png

Сохраняем ветку реестра в файл. В ней хранятся закрытые ключи.

Теперь нам нужно скопировать сразу все сертификаты. В Windows 7, 8 и 10 они живут в директории —

C:\Users\zerox\AppData\Roaming\Microsoft\SystemCertificates\My.

Сохраняйте эту директорию.

Для переноса ключей и сертификатов нам надо скопировать на другой компьютер сохраненную ветку реестра и директорию с сертификатами My. Открываем файл с веткой реестра в текстовом редакторе и меняем там SID пользователя со старого компьютера на SID пользователя нового компьютера. Можно прям в блокноте это сделать поиском с заменой. Perenos-sertificatov-09.png

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

CMD - экспорт сертификата

@echo off
setlocal
msg * Starting Export %username% Cert
mkdir %systemdrive%\Cert_User
set «exec=wmic useraccount where name=»%username%» get sid /value»
for /f %%i in (‘ «%exec%» ‘) do 1>nul set «%%i»
reg export «HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Crypto Pro\Settings\Users\%sid%\Keys» %systemdrive%\Cert_User\%username%_Cert.reg /y
start %systemdrive%\Cert_User

УДАЛЕНИЕ СЕРТИФИКАТОВ

  • Для того чтобы удалить сертификаты - необходимо запустить из консоли certmgr.msc
(Пуск -> certmgr.msc в поле Найти программы и файлы). 

Там вы сможете удалить этот сертификат и спасти себе кучу времени.

TLS/SSL: openssl — извлечь KEY и CRT из PFX

Что бы извлечь сертификат из PFX — выполняем:

# openssl pkcs12 -in wildcard_meister_de_2014.pfx -out music.meister.de.crt -nodes -nokeys -cacerts
Enter Import Password:
MAC verified OK

Ключ:

# openssl pkcs12 -in wildcard_meister_de_2014.pfx -nocerts -out music.meister.de.key
Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

Проверяем:

# ls -l music.meister.de.*
-rw-r--r-- 1 root root    0 Aug  4 12:16 music.meister.de.crt
-rw-r--r-- 1 root root 2118 Aug  4 12:17 music.meister.de.key
  • Форматы .cer и .crt ничем не отличаются. Поэтому можно смело менять расширение файла на требуемое.

ИСТОЧНИК:


* Перенос контейнеров закрытых ключей и сертификатов CryptoPro

ПОЛЕЗНОЕ: