КЭДО — пошаговая инструкция
КЭДО: подробная инструкция по работе
Заголовок раздела «КЭДО: подробная инструкция по работе»Модуль КЭДО (korport.kedo 2.0+) — кадровый электронный документооборот в Portal с корпоративной УНЭП. Данные процесса — списки Portal; UI — WebPart на /kedo/pages/home. В platform SDK остаются криптография УЦ/УНЭП (KedoCryptoService), тонкий adapter пакетов (KedoPackageAdapter) и job kedo.createIntegrationPackage (например, приказы из модуля отпусков).

Сотрудник видит, что нужно подписать или с чем ознакомиться

PIN УНЭП и мгновенная проверка подписи

Выпуск корпоративной подписи без КриптоПро и токенов

Типовой сценарий: ознакомление с локальным актом
Подпись строится на алгоритмах ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012. Это не УКЭП и не Госключ: для равнозначности бумажной подписи у работодателя должны быть локальные акты, согласие работника и соглашение о признании УНЭП (шаблоны модуль кладёт в библиотеку при установке).
Карточка модуля в каталоге: korport.ru/modules/kedo · этот документ на сайте: korport.ru/docs/kedo
Содержание
Заголовок раздела «Содержание»- Роли и кто что делает
- Как открыть КЭДО
- Первичная настройка (один раз)
- Юридическая подготовка (рекомендуется до боевого запуска)
- Выпуск УНЭП сотруднику
- Активация УНЭП сотрудником (PIN)
- Перевыпуск и отзыв УНЭП
- Отправка документа на подпись
- Ознакомление с ЛНА
- Как сотрудник подписывает документ
- Где увидеть, что документ подписан
- Как проверить подпись (цифровой след и
.sig.json) - Уведомления
- Что нельзя подписывать УНЭП
- Частые вопросы и ошибки
- Краткая шпаргалка URL
1. Роли и кто что делает
Заголовок раздела «1. Роли и кто что делает»| Роль | Кто это | Что может |
|---|---|---|
| Администратор портала | is_portal_admin | Всё в КЭДО + установка модуля, лицензия, env |
| Администратор КЭДО | участник группы «Администраторы КЭДО» | Создать УЦ, настройки, выпуск/отзыв УНЭП, отправка документов и ЛНА |
| Сотрудник | обычный пользователь портала | Активировать свою УНЭП (PIN), видеть «На подпись», подписывать / знакомиться, смотреть свой след |
Группа «Администраторы КЭДО» создаётся автоматически при установке модуля. Учётная запись admin (если есть) добавляется в группу provisioner’ом. Остальных людей добавляет администратор портала: Админка → Группы (или экран управления группами).
Без членства в группе (и без роли portal admin) вкладки Отправка, ЛНА, Настройки в интерфейсе КЭДО не показываются.
2. Как открыть КЭДО
Заголовок раздела «2. Как открыть КЭДО»Есть два удобных способа.
Способ A — прямые адреса (основной рабочий интерфейс)
Заголовок раздела «Способ A — прямые адреса (основной рабочий интерфейс)»Введите в браузере (подставьте свой хост портала):
| Раздел | Адрес |
|---|---|
| Входящие «на подпись» | https://ваш-портал/kedo/pages/home?view=inbox |
| Отправка документов | https://ваш-портал/kedo/send |
| Ознакомление с ЛНА | https://ваш-портал/kedo/lna |
| Сертификаты УНЭП | https://ваш-портал/kedo/certificates |
| Настройки | https://ваш-портал/kedo/pages/home?view=settings |
| Карточка конкретного документа | https://ваш-портал/kedo/packages/{id} |
Наверху экрана КЭДО — горизонтальное меню разделов (На подпись, Отправка, …).
Способ B — пункт в боковом меню
Заголовок раздела «Способ B — пункт в боковом меню»После установки модуля в боковом меню портала появляется один пункт «КЭДО» — он открывает /kedo/pages/home. Разделы (На подпись, Отправка, …) переключаются вкладками внутри экрана КЭДО. Старые URL /kedo/inbox и т.п. редиректятся на ?view=….
Если видите «модуль недоступен»
Заголовок раздела «Если видите «модуль недоступен»»Значит в лицензии нет entitlement korport.kedo или модуль не установлен. См. §3.
3. Первичная настройка (один раз)
Заголовок раздела «3. Первичная настройка (один раз)»Делает администратор инфраструктуры / портала. Без этих шагов подписи не заработают.
Шаг 3.1. Лицензия
Заголовок раздела «Шаг 3.1. Лицензия»- В ключе лицензии Portal должен быть entitlement
korport.kedo(на сайте korport.ru / в CRM — пресет «КЭДО»). - Активируйте обновлённый
LICENSE.keyв портале (Админка → Продукт и лицензия или CLI).
Шаг 3.2. Секретный ключ тома KEDO_MASTER_KEY
Заголовок раздела «Шаг 3.2. Секретный ключ тома KEDO_MASTER_KEY»Закрытые ключи сотрудников шифруются на сервере. Без master key выпуск УНЭП и подписание невозможны.
Задайте переменную окружения процессу Portal.Api (и при необходимости Worker):
| Способ | Пример |
|---|---|
| Kubernetes | Secret → env у Deployment API: KEDO_MASTER_KEY |
| Linux / Docker Compose | в .env или unit-файле службы |
| Windows | переменная среды службы / контейнера |
Формат значения (любой из):
- 64 hex-символа (32 байта), например результат
openssl rand -hex 32; - Base64 ровно 32 байт;
- любая длинная секретная строка (из неё система сама выведет 32 байта).
Важно:
- Ключ храните как секрет (не в git, не в
.portalmod). - Смена master key ломает расшифровку уже выданных ключей сотрудников — по сути потребуется перевыпуск всех УНЭП.
- После смены env перезапустите API.
Шаг 3.3. Установка модуля
Заголовок раздела «Шаг 3.3. Установка модуля»- Админка → Модули.
- Установите КЭДО с korport.ru / из шаблона
kedo/ загрузитеkorport.kedo.portalmod. - Дождитесь успешной установки.
Что создаётся автоматически:
- группа «Администраторы КЭДО»;
- узел меню КЭДО;
- библиотеки «Документы КЭДО» и «Шаблоны КЭДО»;
- списки настроек, пакетов, получателей, подписей, сертификатов (метаданные) и аудита;
- в шаблоны загружаются три текстовых файла (Положение, согласие, соглашение об УНЭП).
Миграции БД платформы (идут с обновлением Portal / образом db-init):
074_kedo.sql— таблицы криптографии (kedo_ca,kedo_certificates,kedo_key_blobs);083_drop_kedo_domain_tables.sql— удаление legacy SQL-таблиц домена после перехода на списки (kedo_packagesи др.). Домен процесса хранится только в списках модуля.
Шаг 3.4. Служба уведомлений
Заголовок раздела «Шаг 3.4. Служба уведомлений»- Админка → Службы.
- Включите службу «Уведомления» (
notifications). - Настройте SMTP, если нужны письма (без SMTP in-app колокольчик всё равно может работать; письма будут пропускаться).
Шаг 3.5. Создать корпоративный удостоверяющий центр (УЦ)
Заголовок раздела «Шаг 3.5. Создать корпоративный удостоверяющий центр (УЦ)»- Откройте
/kedo/pages/home?view=settings. - Убедитесь, что в карточке УЦ написано, что master key задан.
- Заполните название организации (пойдёт в сертификат УЦ).
- При желании укажите публичный URL портала (
https://portal.company.ru) — он попадёт в ссылки в письмах. - Включите/выключите:
- Email-уведомления;
- Уведомления в портале.
- Нажмите «Создать УЦ» (если УЦ ещё нет).
- Нажмите «Сохранить» для остальных настроек.
После создания УЦ вы увидите отпечаток корневого сертификата — его можно зафиксировать во внутреннем регламенте проверки подписи.
Шаг 3.6. Кому дать права администратора КЭДО
Заголовок раздела «Шаг 3.6. Кому дать права администратора КЭДО»- Откройте управление группами портала.
- Найдите «Администраторы КЭДО».
- Добавьте сотрудников HR / кадровой службы, которые будут выпускать УНЭП и слать документы.
Готово: можно выпускать подписи сотрудникам.
4. Юридическая подготовка
Заголовок раздела «4. Юридическая подготовка»Техника сама по себе не заменяет документы. Перед массовым запуском:
- Откройте узел КЭДО → библиотека «Шаблоны КЭДО» (или найдите файлы в контенте узла).
- Возьмите PDF-шаблоны:
- Положение о КЭДО.pdf;
- Согласие работника на КЭДО.pdf;
- Соглашение о признании УНЭП.pdf.
- Доработайте тексты с юристом, утвердите ЛНА, соберите согласия.
В соглашении уже описан порядок проверки через блок «Цифровой след» в карточке документа — это как раз то, что видит пользователь в портале.
5. Выпуск УНЭП сотруднику
Заголовок раздела «5. Выпуск УНЭП сотруднику»Делает администратор КЭДО.
Что происходит технически
Заголовок раздела «Что происходит технически»- Портал генерирует ключевую пару сотрудника (ГОСТ).
- Корпоративный УЦ выпускает X.509-сертификат УНЭП (ФИО, email, привязка к
user_id, срок обычно 1 год). - Закрытый ключ сохраняется только на сервере, в зашифрованном виде. Админ не видит и не может скачать ключ.
- Статус сертификата:
pending_activation— пока сотрудник не задаст свой PIN.
Пошагово в интерфейсе
Заголовок раздела «Пошагово в интерфейсе»- Откройте
/kedo/certificates. - В блоке «Выпуск УНЭП сотруднику»:
- начните вводить имя или логин в поле поиска;
- выберите человека из списка — в поле User ID подставится его UUID;
- либо вставьте UUID вручную.
- Нажмите «Выпустить».
- Сотруднику уйдёт уведомление (если включены каналы): «Выпущена корпоративная УНЭП» со ссылкой на
/kedo/certificates. - В таблице сертификатов появится запись со статусом
pending_activation.
Ограничение
Заголовок раздела «Ограничение»Если у сотрудника уже есть активная УНЭП, система ответит ошибкой: сначала нужно отозвать старую (см. §7).
6. Активация УНЭП сотрудником (PIN)
Заголовок раздела «6. Активация УНЭП сотрудником (PIN)»Делает сам сотрудник под своей учётной записью.
Зачем PIN
Заголовок раздела «Зачем PIN»PIN — это «второй фактор согласия» на использование ключа:
- без PIN ключ нельзя использовать для подписи;
- администратор не знает PIN и не может подписать документ от имени сотрудника;
- PIN нужен при каждом подписании.
Пошагово
Заголовок раздела «Пошагово»- Войдите в портал своей учётной записью.
- Откройте
/kedo/certificates
(или перейдите по ссылке из уведомления / письма). - Если сертификат ждёт вас, увидите блок «Активируйте УНЭП» с серийным номером.
- Придумайте PIN:
- от 6 до 64 символов;
- не сообщайте никому, не отправляйте в чат/почту.
- Введите PIN дважды → «Активировать».
- Статус станет
active. На экране появится блок «Ваша активная УНЭП» (ФИО в сертификате, серийный номер, срок действия).
После этого можно подписывать документы во «На подпись».
Если PIN забыли
Заголовок раздела «Если PIN забыли»Восстановить PIN нельзя — ключ УНЭП завязан на него. Администратор PIN не знает и сбросить его не может.
Что делать:
- Администратор КЭДО на
/kedo/certificatesотзывает текущий сертификат сотрудника. - Выпускает новый УНЭП этому же сотруднику (§5).
- Сотрудник на
/kedo/certificatesзадаёт новый PIN и активирует сертификат (§6 выше).
После этого можно снова подписывать. Документы, уже подписанные старым сертификатом, в цифровом следе остаются; новым ключом подписываются только новые задания.
Подробнее про отзыв и перевыпуск — §7.
7. Перевыпуск и отзыв УНЭП
Заголовок раздела «7. Перевыпуск и отзыв УНЭП»Отдельной кнопки «Перевыпустить» нет — это сознательно два шага (отзыв → новый выпуск). Так безопаснее при увольнении, компрометации PIN или утере контроля над учёткой.
Когда отзывать
Заголовок раздела «Когда отзывать»- сотрудник забыл PIN;
- подозрение, что PIN узнали третьи лица;
- увольнение / перевод, когда доступ к порталу ещё есть, но подписывать уже нельзя;
- истечение политики компании (плановая ротация), даже если срок сертификата ещё не вышел.
Как отозвать
Заголовок раздела «Как отозвать»- Администратор КЭДО →
/kedo/certificates. - В таблице найдите сертификат сотрудника.
- Нажмите «Отозвать» → подтвердите.
- Статус станет
revoked. Подписывать этим сертификатом больше нельзя.
Как выпустить заново (перевыпуск)
Заголовок раздела «Как выпустить заново (перевыпуск)»- Убедитесь, что активной УНЭП у сотрудника нет (отозвана или истекла).
- Снова выполните §5 — Выпуск.
- Сотрудник активирует новый сертификат новым PIN (§6).
Старые подписи на уже подписанных документах остаются в цифровом следе (проверка идёт по сохранённому сертификату и файлу подписи). Отзыв мешает только новым подписям.
8. Отправка документа на подпись
Заголовок раздела «8. Отправка документа на подпись»Делает администратор КЭДО.
Пошагово
Заголовок раздела «Пошагово»- Откройте
/kedo/send. - Заполните форму:
| Поле | Что указать |
|---|---|
| Название | Как документ будет виден сотруднику («Приказ о предоставлении отпуска…») |
| Тип документа | Кадровый тип из списка (общий, отпуск, перевод, трудовой договор и т.д.) |
| Действие | Подписать — полноценная подпись УНЭП; Ознакомиться — то же криптографически, но формулировка «ознакомлен и согласен» |
| Получатели | Поиск по имени/логину → клик по человеку (можно нескольких) |
| Срок подписания | Необязательно. Дата и время, к которым нужно подписать. Включает напоминания неподписавшим |
| Файл | PDF, DOCX и др. — система считает хэш содержимого |
- Нажмите «Отправить».
- Откроется карточка пакета
/kedo/packages/{id}. - Каждому получателю уйдёт уведомление «На подпись: …» / «На ознакомление: …» со ссылкой на карточку (и сроком, если указан).
Список всех отправленных пакетов: кнопка «Все пакеты» на экране отправки или адрес /kedo/packages.
Статусы пакета
Заголовок раздела «Статусы пакета»| Статус | Значение |
|---|---|
pending | Никто ещё не подписал |
partial | Подписали часть получателей |
completed | Подписали все |
cancelled | Нет получателей / отменён |
9. Ознакомление с ЛНА
Заголовок раздела «9. Ознакомление с ЛНА»Типовой сценарий того же движка пакетов.
- Администратор КЭДО →
/kedo/lna. - Укажите название ЛНА, получателей, при необходимости срок, файл.
- «Разослать на ознакомление».
Внутри создаётся пакет с типом lna_ack и действием ознакомиться. Сотрудник на карточке видит кнопку «Ознакомлен и согласен» и вводит PIN — как при обычной подписи.
Дальше статусы и цифровой след те же, что у обычного пакета.
10. Как сотрудник подписывает документ
Заголовок раздела «10. Как сотрудник подписывает документ»Предварительные условия у сотрудника
Заголовок раздела «Предварительные условия у сотрудника»- Есть активная УНЭП (выпуск + PIN).
- Если УНЭП нет — на
/kedo/inboxбудет жёлтое предупреждение со ссылкой на сертификаты.
Пошагово
Заголовок раздела «Пошагово»- Откройте
/kedo/inbox— список документов со статусом ожидания.
Либо кликните уведомление в колокольчике / ссылку в письме. - Откройте нужную строку → карточка документа.
- При необходимости нажмите «Скачать файл» и прочитайте документ.
- В блоке подписания:
- для подписи: «Подписать УНЭП»;
- для ознакомления: «Ознакомлен и согласен».
- Введите свой PIN.
- Подтвердите отправку формы.
Если PIN неверный — ошибка, документ не считается подписанным.
Если PIN верный:
- формируется подпись ГОСТ в формате
portal-kedo-unep-v1; - она проверяется сразу;
- файл подписи сохраняется на сервере (
.sig.jsonрядом с пакетом в object storage); - ваш статус в таблице получателей становится
signedс датой и временем; - на карточке появляется отметка, что вы уже подписали.
Кнопка «Скачать файл» отдаёт исходный документ пакета.
После хотя бы одной подписи появляется «Скачать документ с подписями» — ZIP с документом и файлами подписей (.sig.json, формат portal-kedo-unep-v1). В таблице цифрового следа у каждой подписи есть кнопка «.sig.json». Целостность также смотрите в блоке «Цифровой след».
Повторно подписать тот же пакет тем же получателем нельзя.
11. Где увидеть, что документ подписан
Заголовок раздела «11. Где увидеть, что документ подписан»Сотрудник
Заголовок раздела «Сотрудник»- На своей карточке документа — зелёная отметка «Вы подписали документ … (дата)».
- Во «На подпись» после обновления документ пропадёт из списка
pending(inbox показывает ожидающие).
Администратор КЭДО / инициатор
Заголовок раздела «Администратор КЭДО / инициатор»- Уведомление (колокольчик и/или email, если включены каналы):
- при каждой подписи получателя — «Подписано: … (N/M)»;
- когда подписали все — «Подписано всеми: …».
- Карточка
/kedo/packages/{id}(из «Все пакеты» или из уведомления):- статус пакета (
partial/completed); - счётчик «N/M подписано»;
- срок (если задан при отправке);
- таблица «Получатели»: сотрудник / статус / дата.
- статус пакета (
Так видно, кто уже подписал, а кто ещё нет.
12. Как проверить подпись (цифровой след и .sig.json)
Заголовок раздела «12. Как проверить подпись (цифровой след и .sig.json)»В портале — блок «Цифровой след»
Заголовок раздела «В портале — блок «Цифровой след»»На карточке документа система при открытии заново:
- скачивает файл документа;
- считает хэш ГОСТ Р 34.11-2012;
- сверяет с хэшем, сохранённым при отправке («Совпадение хэша файла: да/нет»);
- для каждой подписи проверяет криптографию по сертификату сотрудника и цепочке до корпоративного УЦ;
- показывает:
| Колонка | Смысл |
|---|---|
| Подписант | ФИО / отображаемое имя |
| Когда | Дата и время подписи |
| Проверка | ✓ валидна или текст ошибки |
| Сертификат | Серийный номер УНЭП |
| IP | Адрес, с которого выполнили подпись |
| Файл | кнопка «.sig.json» — скачать контейнер этой подписи |
Дополнительно на карточке видны:
- хэш документа (hex);
- отпечаток УЦ организации;
- «Скачать документ с подписями» — ZIP: исходный файл + все
signatures/*.sig.json.
Если файл на диске подменили после отправки — совпадение хэша будет «нет», живая проверка подписей тоже укажет на проблему. Это и есть практическая проверка целостности из соглашения об УНЭП.
Подписи хранятся отдельно от PDF/DOCX: контейнер portal-kedo-unep-v1 (JSON) в object storage. В следе система заново читает документ и каждый сохранённый файл подписи.
Что внутри .sig.json (portal-kedo-unep-v1)
Заголовок раздела «Что внутри .sig.json (portal-kedo-unep-v1)»Файл подписи — JSON, не CAdES и не контейнер КриптоПро. В нём есть и кто / когда, и криптоматериал:
| Поле | Смысл |
|---|---|
Format | всегда portal-kedo-unep-v1 |
DigestAlg | алгоритм хэша документа: GOST3411-2012-256 |
SignAlg | алгоритм подписи: GOST3410-2012-256 |
ContentHashHex | хэш исходного документа (hex) |
SignatureBase64 | сама подпись ГОСТ (base64) |
CertificateBase64 | X.509 сертификат УНЭП подписанта (DER, base64): CN = ФИО, email, организация |
SignedAtUtc | момент подписи (UTC), заявленный при Sign |
Кто подписал — из CertificateBase64 (subject: CN=…, emailAddress=…).
Когда — поле SignedAtUtc (то же время в колонке «Когда» цифрового следа).
Пример subject сертификата:
CN=Администратор портала, OU=UNEP, O=…, emailAddress=user@example.com.
Как проверить снаружи Portal
Заголовок раздела «Как проверить снаружи Portal»Нужен архив документ + .sig.json (кнопка «Скачать документ с подписями» или отдельные кнопки «.sig.json»). Желательно сохранить и сертификат корпоративного УЦ (отпечаток УЦ виден в следе).
- Кто и срок сертификата — без Portal: декодировать
CertificateBase64в DER и открыть, например
openssl x509 -inform DER -in cert.cer -noout -subject -dates -serial. - Целостность и криптопроверка — не через КриптоПро / обычный CAdES: формат свой, алгоритмы ГОСТ. Практичные варианты:
- снова открыть пакет в Portal и смотреть «Цифровой след»;
- свой verifier на ГОСТ (та же логика, что в ядре Portal): пересчитать хэш файла → сравнить с
ContentHashHex→ проверитьSignatureBase64открытым ключом из сертификата → (желательно) что сертификат выдан вашим УЦ.
SignedAtUtc — заявленное время из контейнера, не метка доверенного TSA. Юридическая сила — по локальным актам и соглашению об УНЭП + цепочке до корпоративного УЦ, не как у УКЭП / Госключа.
API:
GET /api/v1/kedo/packages/{id}/signed-bundle— ZIP;GET /api/v1/kedo/packages/{id}/signatures/{signatureId}/file— один.sig.json;GET /api/v1/kedo/packages/{id}/trail— живая проверка без скачивания.
13. Уведомления
Заголовок раздела «13. Уведомления»Какие события шлют уведомления
Заголовок раздела «Какие события шлют уведомления»| Событие | Кому | Тема / смысл |
|---|---|---|
| Выпущена УНЭП | сотруднику | Нужно активировать PIN |
| Документ на подпись | каждому получателю | Ссылка на /kedo/packages/{id} (+ срок, если задан) |
| Документ на ознакомление (ЛНА) | каждому получателю | То же |
| Получатель подписал | инициатору (кто отправил пакет) | Прогресс N/M |
| Подписали все | инициатору | Пакет завершён |
| Напоминание о сроке / просрочке | неподписавшим получателям | Только если у пакета задан срок |
Каналы (включаются в /kedo/pages/home?view=settings):
- В портале (in-app) — колокольчик в шапке → список уведомлений
/notifications, источник «КЭДО». - Email — на адрес из профиля пользователя; в письме абсолютная ссылка, если задан публичный URL портала.
Срок и напоминания
Заголовок раздела «Срок и напоминания»- При отправке / ЛНА укажите «Срок подписания» (необязательно).
- В
/kedo/pages/home?view=settings:- включите «Напоминания о сроке»;
- задайте за сколько дней начинать напоминать (по умолчанию 1);
- при необходимости «Напоминать при просрочке» (ежедневно, пока не подписано).
- Напоминания выполняет Timer Job модуля
korport.kedo.reminders(ежедневно ~09:00). Встроенная службаkedo/kedo.remindPendingбольше не используется. - Письма уходят только если включена служба «Уведомления» и настроен SMTP; in-app — по тумблеру в настройках КЭДО.
Поле «За сколько дней до срока» — это не час запуска, а условие «когда пора напоминать» относительно дедлайна документа. Время обхода задаёт расписание Timer Job модуля.
Повторное напоминание одному получателю — не чаще чем раз в ~20 часов.
Что должно быть включено
Заголовок раздела «Что должно быть включено»- Служба «Уведомления» в админке (для email).
- Модуль korport.kedo 2.0+ с Timer Job напоминаний.
- Тумблеры в настройках КЭДО (email / in-app / напоминания).
- Для почты — рабочий SMTP.
- У пользователя заполнен email, если нужны письма.
Если SMTP не настроен, задание на письмо обычно пропускается без падения подписи; in-app при этом может прийти.
Как открыть уведомление
Заголовок раздела «Как открыть уведомление»- Нажмите колокольчик в шапке.
- Найдите запись с источником КЭДО.
- Нажмите переход по ссылке — откроется активация сертификата или карточка документа.
14. Что нельзя подписывать УНЭП
Заголовок раздела «14. Что нельзя подписывать УНЭП»По ТК РФ корпоративной УНЭП сотрудника нельзя оформлять (модуль отклонит отправку таких типов):
| Тип в системе | Документ |
|---|---|
dismissal_order | Приказ об увольнении |
accident_act | Акт о несчастном случае на производстве |
ot_briefing | Инструктаж по охране труда |
Для них нужны УКЭП, Госключ или бумажная подпись — вне текущего модуля КЭДО.
Обычные кадровые документы (отпуска, переводы, командировки, трудовой договор, ЛНА и т.п.) — можно.
15. Частые вопросы и ошибки
Заголовок раздела «15. Частые вопросы и ошибки»«Модуль korport.kedo недоступен по лицензии»
Нет entitlement или не активирован ключ. Проверьте лицензию и установку модуля.
«Не задан KEDO_MASTER_KEY»
Нет переменной окружения у API или API не перезапускали после добавления. См. §3.2.
«Сначала создайте корпоративный УЦ»
Зайдите в настройки КЭДО и нажмите «Создать УЦ».
«У сотрудника уже есть активная УНЭП»
Сначала отзыв, потом новый выпуск (§7).
«Нет активной УНЭП» при подписи
Сотрудник не активировал сертификат PIN’ом или сертификат отозван.
«Неверный PIN»
Опечатка или забытый PIN. Восстановить PIN нельзя — только отзыв текущего сертификата и выпуск нового (§6 «Если PIN забыли», §7). Документы, подписанные старым сертификатом, в цифровом следе сохраняются.
Письма не приходят, колокольчик пустой
Служба «Уведомления», SMTP, тумблеры в /kedo/settings, email в профиле.
Вкладки «Отправка» / «ЛНА» не видны
Вы не в группе «Администраторы КЭДО» и не portal admin.
Можно ли подписать с телефона?
Да, если открывается веб-интерфейс портала и сотрудник знает PIN. Отдельного мобильного приложения нет.
Где физически ключ сотрудника?
Только на сервере Portal (зашифрованный blob в БД). В браузер и админу ключ не отдаётся.
K8s / Windows / Linux — разная установка крипты?
Нет. Движок УНЭП в ядре Portal на любой ОС. Модуль включает лицензию, группу и меню. Формат файла подписи portal-kedo-unep-v1 — это не Docker-контейнер, а структура данных подписи.
16. Краткая шпаргалка URL
Заголовок раздела «16. Краткая шпаргалка URL»/kedo/settings ← УЦ, уведомления, название организации/kedo/certificates ← выпуск / активация PIN / отзыв/kedo/send ← отправить на подпись/kedo/lna ← разослать ЛНА/kedo/inbox ← что нужно подписать мне/kedo/packages ← все пакеты (админ)/kedo/packages/{id} ← карточка, статусы, цифровой след/notifications ← колокольчик: все in-app, в т.ч. КЭДОМинимальный боевой чеклист
Заголовок раздела «Минимальный боевой чеклист»- Лицензия
korport.kedo+ установлен модуль KEDO_MASTER_KEY+ перезапуск API- Служба «Уведомления» (+ SMTP по желанию)
/kedo/settings→ создать УЦ → сохранить URL и тумблеры- Людей HR добавить в «Администраторы КЭДО»
- Выпустить УНЭП → сотрудник задал PIN
- Отправить тестовый документ → подписать → проверить «Цифровой след»
Для разработчиков и интеграций
Заголовок раздела «Для разработчиков и интеграций»C# Extension SDK (канон для модулей)
Заголовок раздела «C# Extension SDK (канон для модулей)»Во всех трёх host API есть api.Kedo / ctx.Kedo:
| Host | Интерфейс | ACL |
|---|---|---|
| Event Receiver | IReceiverApi.Kedo → IReceiverKedoApi | entitlement; trusted host (без членства в «Администраторы КЭДО») |
| Timer Job | ITimerJobApi.Kedo → ITimerJobKedoApi | то же |
| WebPart | IWebPartContext.Kedo → IWebPartKedoApi | entitlement + администратор КЭДО (как UI) |
using Portal.Contracts.Kedo;
var packageId = await api.Kedo.CreatePackageAsync( new KedoCreatePackageRequest { Title = "Документ на подпись", DocKind = "general", // или order_vacation, … ActionKind = "sign", // или ack RecipientUserIds = [userId], DeadlineAt = DateTime.UtcNow.AddDays(5), }, fileBytes, "document.pdf", "application/pdf", ct);
var status = await api.Kedo.GetPackageStatusAsync(packageId, ct); // pending / partial / completed / …DTO: Portal.Contracts.Kedo.KedoCreatePackageRequest. Без curl и без raw job payload.
HTTP REST (внешние системы / скрипты)
Заголовок раздела «HTTP REST (внешние системы / скрипты)»Краткий API-префикс: /api/v1/kedo (нужна сессия пользователя с правами админа КЭДО).
| Группа | Сервис | Примеры |
|---|---|---|
| Crypto | KedoCryptoService | GET /status, POST /ca/ensure, certificates (issue / activate / revoke / bulk) |
| Пакеты | KedoPackageAdapter | inbox, packages, POST /packages, POST /lna, …/sign, …/trail, …/file, …/signed-bundle, settings |
Совместимость: job kedo.createIntegrationPackage (base64) остаётся; предпочтителен SDK CreatePackageAsync. Старый payload без docKind → order_vacation.
Формат подписи: portal-kedo-unep-v1 → object key
kedo/{packageId}/signatures/{userId}.sig.json.
Выгрузка: GET /api/v1/kedo/packages/{id}/signed-bundle (ZIP: документ + signatures/*.sig.json).
Исходники модуля: packages/modules/korport/kedo/ (см. README модуля).
Platform: backend/src/Portal.Application/Kedo/ (KedoCryptoService, KedoPackageAdapter, KedoHostFacade, …).