Выгрузка сертификата электронной подписи из 1С, Windows и КриптоПро

· 9 мин

Содержание

Вытащить сертификат из 1С проще всего из его карточки: Администрирование → Общие настройки → Электронная подпись и шифрование → Настройки электронной подписи и шифрования, вкладка «Сертификаты», открыть нужный и сохранить в файл .cer. Это пошаговая операция на пару минут, права администратора в базе для неё обычно не нужны.

Частое заблуждение — что вместе с сертификатом из 1С можно извлечь и саму подпись, чтобы перенести её на другой компьютер. Нельзя: база хранит только открытую часть. Закрытый ключ лежит в контейнере КриптоПро, на токене или в реестре Windows, и переносить нужно именно его. Ниже — рабочие способы для каждой из этих частей.

Что хранит 1С и где лежит остальное

Подпись физически состоит из двух частей. Путаница между ними — главная причина неудачных попыток «достать ЭЦП из базы».

ЧтоГде хранитсяМожно ли извлечьДля чего нужно
Сертификат (открытый ключ) .cerВ базе 1С, в хранилище Windows, внутри контейнераДа, всегдаПроверка подписи, шифрование для владельца, настройка обмена
Закрытый ключКонтейнер КриптоПро: токен, флешка, реестрТолько если ключ помечен экспортируемымПодписание документов
Сертификат + ключ .pfxНе хранится, создаётся при экспортеТолько при экспортируемом ключеПеренос подписи на другой ПК
Подписанный файл .p7s, .sigВо вложениях документов 1СДаИз него можно достать сертификат подписанта

В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) сертификаты лежат в справочнике «Сертификаты ключей электронной подписи и шифрования». В карточке хранятся данные сертификата, кому и кем он выдан, срок действия и отпечаток. Ключа там нет даже в зашифрованном виде.

Если подпись облачная (ключ хранится у провайдера сервиса, а не у вас), вытащить из 1С и с компьютера можно только сертификат. Ключ остаётся в сервисе.

Как выгрузить сертификат из самой 1С

Один сертификат из карточки

  1. Откройте Администрирование → Общие настройки.
  2. Разверните группу «Электронная подпись и шифрование» и перейдите по ссылке «Настройки электронной подписи и шифрования».
  3. На вкладке «Сертификаты» найдите нужный. Ориентируйтесь на колонки «Кому выдан» и «Действителен до»: у одного человека часто бывает несколько сертификатов разных лет.
  4. Откройте карточку двойным щелчком.
  5. Выберите команду сохранения сертификата в файл. Если на командной панели её нет, она в меню «Ещё».
  6. Укажите папку и имя, например Иванов_2026.cer.

Получится файл в двоичном формате DER. Windows открывает его двойным щелчком и показывает поля сертификата: владельца, издателя, срок, отпечаток.

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

Если сертификатов десятки или их нужно выгрузить из чужой базы для аудита, удобнее внешняя обработка. Через конфигуратор сертификат «экспортировать» нельзя: такой команды там нет. Конфигуратор нужен, чтобы создать обработку (Файл → Новый → Внешняя обработка) и посмотреть имена реквизитов справочника.

Код серверной процедуры:

&НаСервереБезКонтекста
Процедура ВыгрузитьСертификатыНаСервере(Каталог)
	Выборка = Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.Выбрать();
	Пока Выборка.Следующий() Цикл
		Данные = Выборка.ДанныеСертификата.Получить();
		Если ТипЗнч(Данные) <> Тип("ДвоичныеДанные") Тогда
			Продолжить;
		КонецЕсли;
		ИмяФайла = Каталог + "\" + Выборка.Отпечаток + ".cer";
		Данные.Записать(ИмяФайла);
	КонецЦикла;
КонецПроцедуры

Вызов с клиента: ВыгрузитьСертификатыНаСервере("C:\certs"). Папку создайте заранее.

Код выполняется на сервере. В клиент-серверной базе файлы окажутся в папке на компьютере сервера 1С, а не у вас. Каталог должен существовать там, а у учётной записи, от имени которой запущена служба сервера, должны быть права на запись.

Имя по отпечатку удобно: оно уникально, а и 1С, и Windows ищут сертификат именно по нему. Если нужен человекочитаемый список, допишите вывод Выборка.Наименование и отпечатка в табличный документ.

Перед запуском сверьте имена реквизитов в дереве конфигурации: в старых редакциях БСП справочник и его поля могли называться иначе.

Файловая база не открывается и вложения с подписью

Файл 1Cv8.1CD — не архив и не папка: в нём нельзя найти сертификат поиском или открыть его архиватором. Править этот файл сторонними программами опасно, проще поднять копию.

Порядок, если база не запускается у пользователя:

  1. Скопируйте каталог базы целиком в отдельную папку.
  2. Добавьте копию в список баз и откройте её. Если мешает пароль пользователя, сбросьте его в копии через конфигуратор (Администрирование → Пользователи) — для этого нужен пароль администратора базы.
  3. Выгрузите сертификаты способами из раздела выше.
  4. Удалите копию: в ней персональные данные и вся бухгалтерия.

Второй источник сертификата — сами подписанные файлы. Если документ подписан в 1С, у него есть подпись .p7s или .sig, а внутри неё — сертификат подписанта. Сохраните документ вместе с подписью из списка электронных подписей объекта и достаньте сертификат утилитой (команды — в разделе про OpenSSL). Это выручает, когда контрагент прислал подписанный документ, а сам сертификат вы у него не запрашивали.

Экспорт сертификата из хранилища Windows

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

  1. Нажмите Win+R, введите certmgr.msc.
  2. Откройте Личное → Сертификаты.
  3. Правой кнопкой по нужному сертификату: Все задачи → Экспорт.
  4. На вопросе про закрытый ключ выберите «Нет, не экспортировать закрытый ключ», если нужен только .cer.
  5. Формат: «Файлы X.509 (.CER) в кодировке DER» или Base-64. Для 1С и большинства порталов подходят оба.
  6. Укажите путь и завершите мастер.

Сертификаты удостоверяющих центров лежат рядом, в узлах «Доверенные корневые центры сертификации» и «Промежуточные центры сертификации». Их выгружают так же, когда на другом компьютере не строится цепочка.

Сертификаты, установленные для всех пользователей, ищите в оснастке certlm.msc (хранилище локального компьютера). Для неё нужны права администратора Windows.

Сертификат и ключ из контейнера КриптоПро

Когда сертификата нет ни в 1С, ни в certmgr.msc, он почти всегда есть внутри контейнера.

Достать только сертификат

  1. Запустите «КриптоПро CSP», вкладка «Сервис».
  2. «Просмотреть сертификаты в контейнере» → «Обзор», выберите контейнер (токен, флешку или реестр).
  3. Нажмите «Далее», затем «Свойства».
  4. В окне сертификата: вкладка «Состав» → «Копировать в файл».

Там же есть кнопка «Установить»: она кладёт сертификат в личное хранилище и связывает его с ключом. После этого 1С видит подпись при добавлении сертификата из установленных на компьютере.

Перенести ключ на другой компьютер

СпособКогда подходитОграничения
Сервис → Скопировать в КриптоПроКопия контейнера на флешку или в реестрКлюч должен быть экспортируемым, нужен PIN
Экспорт в .pfx из certmgr.mscНужен один файл под паролемТолько для экспортируемых ключей; для ГОСТ нужна КриптоПро CSP 5.0
Перенос папки контейнера с флешкиФайловый контейнер вида xxxxxx.000Копировать папку целиком, со всеми файлами .key
Подключить токен на новом ПКНеизвлекаемый ключ (КЭП из ФНС и т. п.)Копию сделать нельзя, только установить сертификат с токена

Ключи в реестре на 64-битной Windows лежат в ветке:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Crypto Pro\Settings\Users\<SID пользователя>\Keys

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

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

OpenSSL, certutil и keytool: конвертация и разбор

Утилиты нужны, когда сертификат уже у вас в каком-то виде и его надо привести к формату, который ждёт портал, сервер интеграции или программа.

certutil встроен в Windows, ставить ничего не нужно:

:: список личных сертификатов текущего пользователя
certutil -user -store My

:: сохранить сертификат по серийному номеру или отпечатку в файл
certutil -user -store My <отпечаток> C:\certs\cert.cer

:: посмотреть содержимое файла
certutil -dump C:\certs\cert.cer

:: Base64 -> двоичный DER и обратно
certutil -decode cert_base64.txt cert.cer
certutil -encode cert.cer cert_base64.txt

OpenSSL удобен для конвертации и разбора подписей:

# DER -> PEM (текст с BEGIN CERTIFICATE)
openssl x509 -inform DER -in cert.cer -out cert.pem

# посмотреть владельца и срок действия
openssl x509 -inform DER -in cert.cer -noout -subject -enddate

# достать сертификат подписанта из файла подписи
openssl pkcs7 -inform DER -in document.p7s -print_certs -out signer.pem

Если .sig в текстовом виде (Base64 без заголовков), сначала прогоните его через certutil -decode.

Без ГОСТ-модуля OpenSSL прочитает структуру сертификата, но может не распознать алгоритм ключа. Владелец, издатель и сроки при этом видны.

keytool из состава Java нужен для интеграций на Java: просмотр keytool -printcert -file cert.cer и импорт сертификата в хранилище доверенных. С ГОСТ-ключами стандартная Java без отдельного криптопровайдера не работает , поэтому keytool применяют в основном для RSA-сертификатов серверов обмена.

Почему не получается извлечь сертификат

Диагностика: выберите симптом

Ещё одна ловушка — старый сертификат. В справочнике 1С остаются все сертификаты, включая просроченные. Перед выгрузкой сверьте «Действителен до», иначе на портал или в банк уйдёт файл, который там отклонят.

Как хранить выгруженные сертификаты и ключи

Файл .cer — открытая информация. Его можно отправлять по почте контрагенту, банку, в службу поддержки. Скомпрометировать подпись по нему нельзя.

С ключом всё иначе. Закон об электронной подписи обязывает владельца обеспечивать конфиденциальность ключа, а документ, подписанный его ключом, считается подписанным владельцем.

  • 🔒 .pfx ставьте на длинный пароль и сообщайте его отдельным каналом, не тем, по которому шёл файл.
  • 🗂️ Копии контейнеров не держите на общем сетевом диске и в мессенджерах.
  • 🧹 После переноса удалите временные копии: на флешке, в «Загрузках», в корзине.
  • 🔑 Смените PIN токена со стандартного, если его не меняли после выдачи.
  • 📅 Просроченные сертификаты не удаляйте из 1С: они нужны для проверки старых подписанных документов.

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

Частые вопросы

Можно ли скопировать КЭП руководителя, полученную в ФНС?
Нет. Такие ключи выдаются на токенах как неизвлекаемые. На другом компьютере достаточно подключить токен и установить с него сертификат.
Чем .cer отличается от .pfx?
.cer содержит только сертификат и годится для проверки подписи и настройки обмена. .pfx содержит сертификат и закрытый ключ под паролем, им можно подписывать.
Нужно ли удалять сертификат из 1С после увольнения сотрудника?
Удалять не нужно: он понадобится для проверки уже подписанных документов. Ограничьте доступ к нему пользователей базы, а сам сертификат отзовите в УЦ.
Как узнать отпечаток сертификата без 1С?
Откройте .cer двойным щелчком, вкладка «Состав», поле «Отпечаток». Или выполните certutil -dump и найдите строку с хешем сертификата.
Подойдёт ли сертификат, выгруженный из 1С, для входа на госпортал?
Порталу нужен не файл, а подпись: он читает сертификат с токена через плагин. Файл .cer обычно просят банки и контрагенты для настройки обмена.

Источники

  • Федеральный закон от 06.04.2011 № 63-ФЗ «Об электронной подписи»