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

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

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

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Экспорт сертификата CryptoPro

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

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

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

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

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

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

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

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

  • .pfx
  • .cer

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

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

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

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

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

wmic useraccount where name='zerox' get sid

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

В данном случай 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 и экспортируем ее.

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

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

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

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

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

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

Я не раз пользовался этим методом, на текущий момент он 100% рабочий. Написал статью,чтобы помочь остальным, так как сам не видел в интернете подробной и понятной с первого раза статьи на эту тему. Надеюсь, моя таковой получилась.

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Помогла статья? Есть возможность отблагодарить автора

22 комментария

  1. Николай

    Повозился в свое время с этими задачами, когда вел аутсорс бухов…

    • Александр

      есть проще вариант — на облако выкинул скрины — может кому пригодится
      https://cloud.mail.ru/public/m9V6/8tJs5foHa

      ИМХО это на много проще описанного в статье
      И так же в Крипто Про есть возможность в качестве контейнера использовать реестр ( когда устанавливаем контейнер выбираем не флэшку а реестр если конечно были установлены драйвера на контейнер «Реестр» при установке крипто про ) Данный способ официально безопасен только в нормальных операционных системах(Linux подобных ) так как в Linux более менее нормально относятся к безопасности данных, но так как использование сертификатов в операционной системе винодовс само по себе нарушение безопасности (в виду закрытости исходного кода) мы также пользуемся этой функцией и в винде
      можете если есть вопросы писать мне попробую ответить maat@bk.ru

      • Что за бред? «есть возможность в качестве контейнера использовать реестр» и «Данный способ официально безопасен только в нормальных операционных системах(Linux подобных )» в линуксе вообще реестра нет. Что значит официально безопасен?

        Файл посмотрел. Чтобы сэкономить время остальным, скажу что там. Там инструкция как сделать экспорт и перенести один сертификат. То же самое, что тут в статье в первом способе. То есть ручной труд. Автор не понял смысл статьи. Тут рассказано, как перенести разом, скажем, 50 ключей. Руками это очень долго и нудно.

        • Александр

          Что за бред? — улыбнуло)))
          линуксе вообще реестра нет. — имелось в виду хранение сертификатов в системе (в линуксе есть хранение сертификатов в системе — не спорю он называется не реестр)
          Что значит официально безопасен -а то что хранение контейнеров в системе в винде крипто-провайдером, исходя из соображений безопасности, запрещён. а в линуксе разрешен — с условием правильной конфигурации прав и SeLinux.
          как сделать экспорт и перенести один сертификата — это утверждение сомнительно так как можно экспортировать ветками — обычно при переустановке необходимо экспортировать 3 ветки — 5 кликов мыши на каждую — без углублений в реестр и т.д. — занимает 1,5-2 минуты в общей сложности + использование стандартной оснастки без запоминания веток реестра… ИМХО что в купе даёт универсальный инструмент для винды и без заморочек.
          Файл посмотрел. Чтобы сэкономить время остальным, скажу что там — звучит как детектив прочитал не интересно всех убил садовник!!! круто

          • Не понял, что значит «хранение контейнеров в системе в винде крипто-провайдером, исходя из соображений безопасности, запрещён». Если запрещен, то как получается хранить и копировать средствами самой КриптоПро, из ее оснастки? Это штатный функционал.

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

            • Александр

              Если запрещен, то как получается хранить и копировать средствами самой КриптоПро — блокнот позволяет писать скрипты и командная строка позволяет положить Ось в 1 строчку.у меня друг безопасник — говорит нельзя ставить в ось имеющую уязвимости и не регламентированные возможности личные сертификаты (тем более казначейские) ибо они могут свободно сливаться «дружественным» странам. Именно под этим лозунгом США повсеместно использует Linux (Mac), они ведь не используют виндовс, и запретила на своей територии использовать касперского

              • Это все понятно. Но степень паранои должна соответствовать степени важности информации. Допустим, ключ контура ушел в США. Что они с ним будут делать? Сдавать отчетность за вас? То, что в винде закладки, это очевидно. У нас вся оборона сейчас в обязательном порядке переводится на линукс. Но коммерсам, думаю, не стоит об этом переживать. Вся информация о них с другого уровня уходит, точно не через ключи для электронной отчетности 🙂

                • > То, что в винде закладки, это очевидно.
                  а где всё эти чекисты, которые в своё время получили исходники винды? Опять в свой карман смотрели? И смысл закладки в изолированной сети? А с чего вдруг в линукс их нет, когда внезапно находят многолетние дыры, как в SSL?
                  > У нас вся оборона сейчас в обязательном порядке переводится на линукс
                  Вот только что-то ещё ни одного положительного отзыва не видел. Как обычно — распил очевидный, в отличие от не очевидного результата

  2. Кирилл

    Спасибо.
    Неоднократно переносил вторым способом. Мне он кажется даже проще.
    Но при этом как то нет четкого понимания всех этих понятий: контейнер, закрытый ключ, где хранится.
    Не подскажите адекватную статью/ книгу чтобы уложить в мозгах?

    • Да я сам немного плаваю в этой теме. В целом есть понимание, как работает, но не более.

  3. Евгений

    Если контейнер хранится на токене (Jakarta или e-token) и защищен от копирования то ни один способ Вам не поможет. Можно сделать перегенерацию сертификата с указанием хранилища «реестр» и уже потом, если вдруг понадобится переносить спокойно.

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

  4. Карен Григорьевич

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

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

  5. your lovely kitten

    А что делать если на другом компьютере стоит VIPNet, а не Крипто-ПРО? Я имею ввиду как здесь работать с реестром.

    • Не знаю, это совершенно другой софт. Надо смотреть, где он хранит ключи. Моя статья актуальна исключительно для переноса ключей КриптоПро.

      • Евгений

        Ключи для крипто про и вип нет — это разные ключи и друг с другом не курят. C VipNet вообще все просто. Открыть випнет — вкладка контейнеры — если контейнеров много, они как правило хранятся в одном месте. Как правило процесс генерации ключей запускается не самим криптопровайдером, а использующим его софт (1с отчетность, Астрал Отчет и др. в каждом софте настроен свой путь для хранения ключей по умолчанию…Гдето это путь можно менять на этапе генерации — гдето нет. ) Сам контейнер — это цельный файл, копировать его легко, как и любой другой. Единственно, что, возможно, копирование каталога с сертами тут не проканает. — 1) Перенос каталога с контейнерами ключей в любое место на ПК. 2) Указание в випнет пути этого каталога. 3) Последовательное добавление контейнеров из выпадющего списка во вкладке контейнеры. Инициализация каждого контейнера (установка серта из контейнера закрытого ключа) — по сути строиться связь между контейнером и сертом в хранилище сертификатов

        • Спасибо за обстоятельный ответ. Думаю, многим будет полезен.

          • Евгений

            Рад помочь. Статья отличная. Особенно раздел по работе с частью реестра.
            Касаемо VipNet CSP и Крипто про. Все таки это конкуренты. И работают с крипто ядром винды по разному. Пытаться ставить их на одном ПК крайне не рекомендуемо и даже опасно. В лучшем случае — это ошибки при шифровании (расшифровке), вплоть до умирания абсолютно всех сертов в хранилище сертификатов «Личное» («Ваш сертификат имеет недействительную цифровую подпись») В худшем — положите ОС. После перезагрузки, которая рекомендуема после инсталляции любого из них, ос может не загрузится. Так что, если вас нарочито пытаются склонить к установке их на одном ПК, для удобства конкретного пользователя, отбрыкивайтесь как можете. В ход могут идти любые страшилки, тем более, что они обоснованы. Да, есть способы их подружить на одном ПК. Это последовательность установки и тд. Но по хорошему, это шаманские пляски и костыли.

  6. Способ 100% рабочий, сегодня переносил реестровые ключи с профиля на профиль, после добавления ПК в домен. Спасибо огромное!

  7. Подтверждаю! Тоже перенес сегодня все по статье, когда буху менял системник.

  8. Владимир

    Реально! Огромное благодарю за облегчение работы админа!

Добавить комментарий

Ваш e-mail не будет опубликован.