г. Оренбург, ул. Комсомольская, д. 26

пн-пт 09:00 - 18:00

Отдел качества: +7 (922) 886 95 17

Установка сертификатов КриптоПро на Linux: пошаговый гайд

Рабочая станция с установленным криптопровайдером (КриптоПро) без настроенных сертификатов напоминает автомобиль с полным баком, но без ключей зажигания: двигатель есть, ехать некуда. В экосистеме 1С, ЭДО и корпоративных шлюзах именно связка «закрытый ключ + сертификат + доверенные УЦ» открывает доступ к юридически значимым операциям. Ниже — сжатый, но полный маршрут настройки в GNU/Linux с акцентом на дистрибутивы семейства Debian (Astra Linux, Ubuntu), где CSP устанавливают из deb-пакетов amd64.

Настройка сертификатов КриптоПро на Linux сводится к трём последовательным шагам: (1) импорт корневого и промежуточных УЦ (certmgr -inst -cert ... -store uRoot/CA), (2) установка личного ключа — из PFX-файла, каталога KEY или токена — с привязкой к хранилищу uMy, (3) проверка цепочки доверия и тестовая подпись через cryptcp. Все утилиты лежат в /opt/cprocsp/bin/amd64/; команды на Astra Linux и Ubuntu идентичны — различаются только политики ОС и источник установки CSP. Главная ловушка: путаница между пользовательским (uMy/uRoot) и системным (my/root) хранилищем — прикладное ПО вроде 1С не находит сертификат, если он ушёл в «Другие пользователи» вместо «Личное».

Утилиты располагаются в /opt/cprocsp/bin/amd64/. Разрядность системы проверьте командой uname -m: для x86_64 используйте каталог amd64, для i686/i386 — ia32. Версию CSP смотрите через cpconfig -license -view или список установленных пакетов. Примеры рассчитаны на КриптоПро CSP 5.x. Команды certmgr, csptest и cryptcp на Astra Linux и Ubuntu совпадают; различаются, как правило, политики безопасности ОС и способ установки deb-пакетов.

1. Базовые понятия и логика настройки

Инфраструктура открытых ключей на Linux не использует системное хранилище Windows. КриптоПро CSP создаёт собственные логические хранилища: личные ключи пользователя, якорные центры доверия, промежуточные издатели. Открытый ключ может жить отдельно от закрытого — типичный случай после выпуска сертификата УЦ, когда запрос на сертификат (CSR) сгенерирован локально.

Маршрут настройки с нуля обычно выглядит так:

  1. Проверить лицензию и видимость утилит CSP.
  2. Импортировать корневой и, при необходимости, промежуточный УЦ.
  3. Обновить CRL (списки отзыва), если политика организации это требует.
  4. Разместить личный ключ (PFX, перенос каталога, токен) и связать с сертификатом.
  5. Прогнать тестовую подпись cryptcp.

Мини-глоссарий:

  • Контейнер — каталог или область на токене, где лежит закрытый ключ;
  • HDIMAGE — программный контейнер на диске;
  • PFX/P12 — переносимый файл «ключ + сертификат» с паролем;
  • P7B — PKCS#7-пакет с несколькими сертификатами УЦ;
  • CRL — перечень отозванных до срока серийных номеров.

Минимальные предпосылки:

  1. в /opt/cprocsp/bin/amd64/ доступны certmgr, csptest, cpconfig, cryptcp;
  2. cpconfig -license -view не сообщает об истечении лицензии;
  3. известен источник файлов (.pfx/.cer/.p7b/.crl) или тип носителя;
  4. для системного хранилища потребуются права sudo.

2. Хранилища, форматы и первичная диагностика

2.1 Куда попадает сертификат

Путаница между пользовательским и системным хранилищем — главная причина ситуации «всё импортировал, 1С не видит». Префикс u (uMy, uRoot) ограничивает видимость текущим UID; запись в root/CA без u доступна всем сеансам и часто требует root-прав.

Параметр -store

Роль в PKI

Кому видно

uRoot / root

Якорные (корневые) УЦ

Пользователь / вся система

CA / uCA

Промежуточные издатели, CRL

Пользователь / вся система

uMy / my

Личные сертификаты с ключом

Пользователь / вся система

2.2 Какие файлы у вас на руках

  • PFX — готовый перенос «под ключ»; нужен только пароль экспорта;
  • CER/CRT — только открытая часть; без контейнера бесполезен для подписи;
  • Каталог KEY — бинарные файлы контейнера после копирования с другого ПК;
  • P7B — пачка сертификатов цепочки одним импортом;
  • CRL — двоичный/PEM-список отозванных сертификатов.

2.3 Три команды экспресс-проверки

export CSP=/opt/cprocsp/bin/amd64
$CSP/cpconfig -license -view
$CSP/certmgr -list
$CSP/csptest -keyset -enum_cont -verifycontext -fqcn

Сохраните FQCN нужного контейнера из последней команды — строка вида \\.\HDIMAGE\<uuid> понадобится при привязке .cer.

3. Импорт личного ключа через консоль

Серверные и VDI-машины часто настраивают без графического интерфейса. Ключи -inst и -install в certmgr равнозначны; ниже — рабочие однострочники с пояснениями в комментариях

3.1. Готовый PFX

CSP=/opt/cprocsp/bin/amd64
# PIN — пароль, заданный при выгрузке на Windows
$CSP/certmgr -install -pfx -file "$HOME/certs/employee.pfx" -pin '****' -store uMy
$CSP/certmgr -list -store uMy | grep -i subject

3.2. Открытая часть (.cer) и существующий контейнер

CSP=/opt/cprocsp/bin/amd64
CONT='\\.\HDIMAGE\my-container-name'   # из csptest -enum_cont
$CSP/certmgr -inst -file "$HOME/certs/issued.cer" -cont "$CONT" -silent -store uMy
# интерактивный выбор контейнера:
$CSP/certmgr -inst -file "$HOME/certs/issued.cer" -ask-container -store uMy

3.3. Перенос каталога KEY с другой машины

Скопируйте папку контейнера в /var/opt/cprocsp/keys/<linux_user>/ (уточните путь в документации вашей сборки). Права — только владелец (chmod 700). Затем:

CSP=/opt/cprocsp/bin/amd64
$CSP/csptest -absorb -certs -autoprov
$CSP/certmgr -list -store uMy

3.4. Аппаратный носитель

CSP=/opt/cprocsp/bin/amd64
$CSP/certmgr -inst -cont '\\.\Rutoken\container_id' -store uMy

3.5. Дозапись .cer в контейнер после выпуска УЦ

Типовой сценарий: запрос на сертификат отправлен, ключ остался локально, от УЦ получен только файл issued.cer.

CSP=/opt/cprocsp/bin/amd64
$CSP/certmgr -inst -inst_to_cont -ask-container -pin "token_pin" \
  -file "$HOME/certs/issued.cer"
$CSP/csptest -keyset -check -cont '\\.\reader\container'

4. Тот же результат через графическую оболочку

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

4.1. Загрузка PFX мастером

  • Запустить графическую оболочку → раздел работы с сертификатами.
  • Выбрать загрузку ключевого материала из PFX.
  • Указать путь к файлу и пароль экспорта.
  • При необходимости задать новый PIN контейнера или оставить поле пустым.
  • Явно выбрать хранилище «Личное» перед завершением.
  • Убедиться, что в списке появился субъект (Subject) с вашим ФИО или организацией.

4.2. Файл .cer (открытая часть)

  • Расширенный режим → ручной выбор хранилища (без автоподбора).
  • Хранилище «Личное» → команда добавления сертификата из файла.
  • Выбрать .cer на диске и подтвердить.

Внимание. Без связанного закрытого ключа подпись по-прежнему недоступна.

4.3. Контейнер после копирования KEY

После размещения каталога в keys/<user> контейнер виден на вкладке контейнеров.

  • Отметить нужный контейнер.
  • Выполнить установку сертификата в хранилище «Личное».
  • Дождаться сообщения об успешном завершении.

4.4. USB-токен / флешка

  • Подключить носитель до старта CSP.
  • На вкладке контейнеров найти устройство (поиск по имени ускоряет работу).
  • Импортировать сертификат в «Личное».

5. Доверие к корневому УЦ

Корень цепочки — самоподписанный сертификат издателя верхнего уровня. Без него промежуточные и личные сертификаты будут «недоверенными», даже если импорт прошёл без ошибок.

5.1. Консоль

CSP=/opt/cprocsp/bin/amd64
$CSP/certmgr -inst -cert -file "$HOME/certs/root_ca.cer" -store uRoot
# для всех пользователей машины:
sudo $CSP/certmgr -inst -cert -file /usr/local/share/ca/root_ca.cer -store root
$CSP/certmgr -list -store uRoot

5.2. Графический интерфейс

  • Расширенный режим, ручной выбор хранилища.
  • «Доверенные корневые центры сертификации».
  • Импорт файла .cer; подтвердить стандартное предупреждение безопасности ОС.

6. Промежуточные издатели (файл .p7b)

Между корневым и конечным сертификатом часто есть один или несколько промежуточных УЦ. Пакетный импорт .p7b экономит время по сравнению с поштучным .cer.

CSP=/opt/cprocsp/bin/amd64
$CSP/certmgr -inst -cert -file "$HOME/certs/chain.p7b" -store CA
$CSP/certmgr -list -store CA

7. Актуализация CRL

Список отозванных сертификатов (CRL) фиксирует сертификаты, аннулированные до окончания срока действия. Проверка контрагента без CRL или OCSP не подтверждает, что ключ не отозван. В CSP CRL обычно размещают в хранилище промежуточных УЦ (параметр -store CA).

Источники файла:

  • сайт УЦ, выпустившего ваш сертификат;
  • поле распределения CRL (CDP) в свойствах сертификата;
  • корпоративный портал ИБ (если CRL раздаётся централизованно).

Сохраните .crl локально. Если браузер блокирует HTTP-ссылку — добавьте хост в исключения загрузок (настройки конкретного браузера). Импорт:

CSP=/opt/cprocsp/bin/amd64
$CSP/certmgr -inst -crl -file "$HOME/certs/ca.crl" -store CA

Планируйте обновление до даты следующего выпуска CRL (nextUpdate).

8. Приёмочные испытания рабочего места

Перед передачей АРМ пользователю или подключением к продуктивному ЭДО прогоните короткий сценарий — он выявляет большинство типовых ошибок конфигурации.

  1. uMy содержит сертификат с привязкой к ключу;
  2. uRoot/CA заполнены; цепочка в свойствах сертификата зелёная/полная;
  3. CRL не просрочен (если используется);
  4. cryptcp подписывает и проверяет тестовый файл.

CSP=/opt/cprocsp/bin/amd64

printf 'test' > /tmp/sign_probe.txt
THUMB=<SHA1 из certmgr -list>
$CSP/cryptcp -sign -thumbprint $THUMB -pin <PIN> /tmp/sign_probe.txt /tmp/sign_probe.sig
$CSP/cryptcp -verify -thumbprint $THUMB /tmp/sign_probe.sig

9. Astra Linux и Ubuntu: что реально отличается

Вопрос

Astra Linux

Ubuntu

Откуда CSP

образ ОС / репозиторий заказчика

архив tar.gz или deb с cryptopro.ru

Графический интерфейс

часто в реестре ПО

пакет cprocsp-gui из комплекта

Ограничения

МРД, домен, политики USB

стандартные права UNIX

certmgr

одинаково

одинаково

Перед апдейтом CSP сверьте версию с регламентом ИБ: старые контейнеры GOST 2001 могут потребовать миграции.

10. Диагностика типовых сбоев

Симптом

Гипотеза

Действие

Сертификат есть, подписи нет

нет связи с закрытым ключом

PFX или -cont / -inst_to_cont

Недоверенный издатель

разрыв в цепочке УЦ

uRoot и CA (файл .p7b)

Отказ в доступе (Permission denied)

права на хранилище или каталог keys

sudo, chown

Пустой список контейнеров

токен или драйвер

cprocsp-rdr, переподключить USB

CRL просрочен

файл не обновляли

скачать новый .crl

Неверный PIN

ошибка ввода или блокировка

проверить PIN, разблокировать у УЦ

 

11. Итог

Настройка сводится к заполнению хранилищ в правильном порядке: корневые УЦ → промежуточные и CRL → личный ключ. Графический интерфейс и командная строка взаимозаменяемы; для массового развёртывания удобнее скрипты с certmgr. Резервные копии PFX и PIN храните отдельно от рабочей станции.

Официальные источники:

  • docs.cryptopro.ru — эксплуатационная документация;
  • cryptopro.ru/products/csp/downloads — дистрибутивы;
  • certmgr -help / cryptcp -help — встроенная справка.

 

Часто задаваемые вопросы

Почему 1С не видит сертификат после установки на Linux?

Чаще всего — неверное хранилище. Если сертификат установлен без явного указания (-store uMy), оболочка CSP может отправить его в «Другие пользователи» вместо «Личное». Убедитесь командой certmgr -list -store uMy, что сертификат там есть и у него есть связанный закрытый ключ (поле «Есть приватный ключ: Да»). Если ключа нет — используйте PFX-импорт или -inst_to_cont с явным указанием контейнера.

Как перенести сертификат и ключ КриптоПро с Windows на Linux?

Самый надёжный способ — экспортировать PFX на Windows (с пометкой «Разрешить экспорт закрытого ключа»), скопировать файл на Linux и импортировать: certmgr -install -pfx -file employee.pfx -pin 'пароль' -store uMy. Альтернатива — скопировать каталог контейнера KEY в /var/opt/cprocsp/keys/<user>/ с правами chmod 700, после чего запустить csptest -absorb -certs -autoprov. После любого варианта прогоните тестовую подпись через cryptcp.

В чём разница между хранилищами uRoot/uMy и root/my в КриптоПро на Linux?

Префикс u (uRoot, uMy, uCA) означает пользовательский контекст: хранилище видно только текущему UID. Без префикса (root, my, CA) — системное хранилище, доступное всем пользователям машины; запись в него требует sudo. Для одиночного АРМ достаточно пользовательских хранилищ. Если несколько пользователей или сервис работают с одним сертификатом УЦ — корневые сертификаты имеет смысл установить в системное хранилище root.

Что делать, если CRL устарел и подпись не проходит?

Скачайте актуальный .crl с сайта вашего УЦ (адрес CDP указан в свойствах сертификата в поле «Точки распределения CRL»). Импортируйте командой: certmgr -inst -crl -file ca.crl -store CA. Проверьте дату nextUpdate нового файла — запланируйте обновление заблаговременно. Если браузер блокирует HTTP-ссылку на .crl — добавьте хост УЦ в исключения загрузок.