Перенос контейнеров закрытых ключей и сертификатов CryptoPro
Криптопровайдер КриптоПро на сегодняшний день является, пожалуй, самым популярным на рынке, по крайней мере в России. Я хочу рассказать, как быстро и удобно перенести большое количество контейнеров закрытых ключей CryptoPro и сертификатов к ним. Существует штатный механизм в самой программе, работает в ручном режиме и не подходит, когда надо перенести большое количество.
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти вступительный тест.
Копирование на профиле Диагностики
1. Зайдите на профиль Диагностики «Копирования» по ссылке.
2. Вставьте носитель, на который необходимо скопировать сертификат.
3. На нужном сертификате нажмите на кнопку «Скопировать».
Если на контейнер был задан пароль — появится сообщение «Введите пароль для устройства с которого будет скопирован сертификат».
Введите пароль и нажмите на кнопку «Далее».
4. Выберите носитель, куда необходимо скопировать сертификат и нажмите «Далее».
5. Задайте имя новому контейнеру и нажмите на кнопку «Далее».
6. Должно появиться сообщение об успешном копировании сертификата.
Проведение тестирования
Для этого с помощью КриптоАРМ создадим в реестре контейнер закрытого ключа test-key-reestr, содержащий самоподписанный сертификат (CN=test)
С помощью штатных средств СКЗИ КриптоПРО CSP (Пуск—>Панель управления—>КриптоПро CSP) скопируем ключевой контейнер test-key-reestr на ключевые носители Рутокен ЭЦП и JaCarta ГОСТ. Ключевым контейнерам на ключевых носителях присвоим имена test-key-rutoken и test-key-jacarta соответственно.
Описание приведено применительно к JaCarta ГОСТ (для Рутокен ЭЦП действия аналогичны):
Таким образом получили рабочие ключевые документы на JaCarta ГОСТ (контейнер test-key-jacarta) и Рутокен ЭЦП (контейнер test-key-rutoken).
Попробуем скопировать ключевые контейнеры test-key-rutoken и test-key-jacarta обратно в реестр.
Описание приведено для JaCarta ГОСТ (для Рутокен ЭЦП действия аналогичны).
Как мы видим, ключевая информация успешно скопирована или, другим языком, извлечена из токенов с неизвлекаемым ключом. Получается, что производители токенов и СКЗИ врут? На самом деле нет, и ситуация сложнее, чем кажется на первый взгляд. Исследуем матчасть по токенам.
Копирование закрытого ключа из КриптоПро
Это самый простой способ, и будет актуальным при небольшом количестве контейнеров с закрытыми ключами. Чтобы выполнить перенос сертификатов из реестра, откройте ваш КриптоПРО, вкладка «Сервис», нажимаем кнопку «Сервис», далее через кнопку «Обзор», откройте «Выбор ключевого контейнера» и укажите, какой сертификат вы будите переносить. В моем примере это контейнер «Копия сертификата в реестре (Семин Иван)».
Нажимаем «Далее», вас попросят задать новое имя контейнера с закрытым ключом, введите понятное для себя, для удобства.
У вас откроется окно с выбором носителей, вы можете выбрать либо токен, либо флешку для переноса на другое место. У меня это внешний жесткий диск Z:.
Задаем обязательно пароль, с точки зрения безопасности, так как файлы в таком виде просто скомпрометировать.
Все, на выходе я получил папку со случайным названием и набором ключей в формате key.
Если вы пытаетесь копировать сертификат с токена, то в ряде случаев у вас может появиться ошибка: Ошибка копирования контейнера. У вас нет разрешений на экспорт ключа, потому что при создании ключа не был установлен соответствующий флаг. Ошибка 0x8009000B (-2146893813) Ключ не может быть использован в указанном состоянии.
Связана такая ситуация, что в целях псевдобезопасности, удостоверяющие центры выпускают закрытые ключи без возможности экспорта, и таким образом увеличивают свою прибыль, так как в случае утери или поломки токена, вам придется его перевыпускать, а так как экспорт запрещен, то бэкапа вы сделать не сможете.
Если вы получили ошибку копирования контейнера. У вас нет разрешений на экспорт ключа, то метод с КРиптоПРО вам не поможет
Одновременное копирование нескольких ключей
Если вам необходимо перенести на другой компьютер не одну ЭЦП, а несколько, то используйте способ массового копирования. Создайте на ПК новую ветку, скопировав точный путь с основного рабочего компьютера.
Пошаговый алгоритм, как ЭПЦ перенести с флешки на компьютер (для нескольких ключей).
Шаг 1. Определите Security Identifier или SID (идентификатор безопасности) вашего рабочего ПК. Введите такую команду: wmic useraccount where name=’(имя пользователя)’ get sid. Запомните код.
Шаг 2. Скопируйте контейнеры в файл. Зайдите в реестр и скопируйте действующую ветку: HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeCrypto ProSettingsUsersS-1… (подставьте SID)Keys
Шаг 3. Найдите и экспортируйте ключевую папку — Keys.
Шаг 4. Вы скопировали ключевой контейнер, теперь переносим сертификаты ЭЦП. На диске C есть такая директория: C:Users polzovatelAppDataRoamingMicrosoftSystemCertificatesMy. Скопируйте ее.
Шаг 5. Перенесите на новый компьютер скопированные ветку (замените на SID нового ПК) и директорию с сертификатами (замените аналогичную директорию на новом ПК). Для корректного переноса ветки скопируйте первоначальную строку в блокнот или любой текстовый редактор и поменяйте SID. Откройте файл с расширением .reg, загрузите новые сведения в реестровую запись. Теперь копируйте сертификаты на новый ПК. Процедура завершена.
В 2009 году закончила бакалавриат экономического факультета ЮФУ по специальности экономическая теория. В 2011 — магистратуру по направлению «Экономическая теория», защитила магистерскую диссертацию.
Экспорт PFX-файла и его установка
Экспорт сертификата с закрытым ключом
1. Откройте оснастку работы с сертификатами:
— Пуск → Все программы → КриптоПро → Сертификаты
либо
— Internet Explorer → Сервис → Свойства обозревателя → вкладка Содержание → Сертификаты.
2. Откройте сертификат, который нужно скопировать. На вкладке «Состав» нажмите «Копировать в файл».
3. В «Мастере экспорта сертификтов» нажмите «Далее» и выберите пункт «Да, экспортировать закрытый ключ». Нажмите «Далее».
4. На следующем этапе поставьте галочки у пунктов «Включить по возможности все сертификаты в путь сертификации» и «Экспортировать все расширенные свойства», остальные галочки необходимо убрать. Нажмите «Далее».
5. Обязательно задайте пароль для экспортируемого файла. Данный пароль не рекомендуется сообщать по электронной почте. Нажмите «Далее».
6. Укажите имя файла, выберите путь сохранения и нажмите «Далее», затем нажмите «Готово».
7. Экспортируйте открытый ключ сертификата (см. Экспорт открытого ключа).
8. Заархивируйте полученные файлы форматов .pfx и .cer.
Установка сертификата с закрытым ключом
1. Откройте .pfx файл. Сразу запустится «Мастер импорта сертификатов».
2. Укажите хранилище «Текущий пользователь» и нажмите «Далее», затем снова «Далее».
3. Введите пароль, который указывали при экспорте и поставьте галочку на пункте «Пометить этот ключ как экспортируемый…», иначе наче контейнер нельзя будет скопировать в дальнейшем. Нажмите «Далее».
4. Выберите пункт «Поместить все сертификаты в следующее хранилище», нажмите на кнопку «Обзор», выберите «Личное» и нажмите на кнопку «ОК». Нажмите «Далее», а затем «Готово».
5. В окне КриптоПро выберите носитель, на который хотите сохранить контейнер. При необходимости задайте пароль.
6. Для корректной работы сертификата со встроенной лицензией переустановите сертификат в контейнер (см. Как установить личный сертификат в КриптоПро).
Копирование на профиле Диагностика
Перед началом работы подготовьте носитель, на который хотите скопировать контейнер. Как подготовите его, переходите к выполнению копирования:
Перейдите по ссылке https://help.kontur.ru/copycert , чтобы зайти на профиль Диагностики «Копирования».
С правой стороны сертификатов отобразятся кнопки «Скопировать». Нажмите на эту кнопку на сертификате, контейнер которого вы хотите скопировать.
Если вы задавали пароль на контейнер, появится сообщение, в котором вас попросят ввести его. После ввода нажмите на кнопку «Далее».
Если на контейнере пароля не было, такого окна не будет.
В приведенном списке выберите носитель, на который будет скопирован контейнер с сертификатом и закрытым ключом и нажмите на кнопку «Далее».
Придумайте имя для нового контейнера и введите его в соответствующее окно. Затем нажмите на кнопку «Далее».
Процедура завершится сообщением об успешном копировании сертификата.
Обратите внимание, чтобы работать с перенесенным сертификатом, его нужно установить, следуя указаниям этой инструкции.
Ошибка при копировании контейнера
Если при создании ключа электронной подписи он не был помечен как экспортируемый, то скопировать или скачать его на ПК с токена не получится. Система выдаст ошибку копирования (0x8009000B (-2146893813)).
Чтобы перенести сертификат с токена придется воспользоваться другим способом. Через IE пользователь открывает «Содержание» через «Настройки».
Затем нужно выбрать сертификат и нажать «Экспорт».
В новом окне пользователь выбирает экспортирование закрытого ключа и проставляет все нужные галочки.
Далее нужно указать пароль, т.к. без него продолжать нельзя. А также пользователю нужно указать имя файла и место, куда нужно сохранить закрытый ключ. Остается лишь скопировать сертификат. Для этого нужно выбрать сертификат в списке, нажать «Экспорт» и выбрать файл .CER.
При правильной последовательности появляются два файла: .pfx и .cer.
Для завершения копирования нужно лишь перенести эти файлы на другой компьютер или носитель и запустить их установку при помощи мастера установки сертификатов.
Копирование закрытого ключа электронной подписи нужно в нескольких случаях: при частых путешествиях и в работе с нескольких ПК. Также перенести ключ ЭЦП на рабочий стол можно и для того, чтобы избежать порчи и потери USB-носителя. Процесс копирования проходит в несколько последовательных шагов, а выбрать можно для этого любой удобный способ. Это может быть простое извлечение ключа из закрытого контейнера, копирование при помощи КриптоПро или системный проводник. Ошибки при работе могут возникнуть только в случае защищенного от экспорта сертификата. Тогда пользователю придется произвести копирование при помощи браузера Internet Explorer.