Расширенная версия · поверх открытой

Корпоративный УЦ для внедрения PKI // RBAC · заявки · PAT API · TOTP · реестры OID/политик

Открытая версия OwnCA — это однопользовательский УЦ: выпуск и отзыв сертификатов, CRL, профили расширений, экспорт PFX. Расширенная версия превращает его в основу для построения PKI в масштабах компании: ролевой доступ, очередь заявок с одобрением оператором, доступ по API-токенам, подтверждение выпуска вторым фактором (TOTP), отдельные реестры Custom OID и Certificate Policies, а также квалифицированные ГОСТ-профили (КЭП). Ниже — только то, чего нет в открытой версии.

https://ca.ownca.example/requests
Очередь заявок оператор · фильтр: pending
Pending
7
Approved
42
Rejected
3
Free-form
2
vpn-gw-04.corp pending gost-256 user · ivan
КЭП ФЛ · Петров free-form gost-512 user · petr
smime · a.smirnova pending rsa-2048 user · anna
api-client-07 PAT ec-p256 operator
login.corp.local pending gost-256 otp 
ROLE · user → operator → admin Authorization: Bearer ownca_pat_… TOTP · OTP на выпуск CIDR · IP-ограничения на пользователя OID 1.2.643.100.113.1 · КЭП ФЛ OID 1.2.643.100.3 · СНИЛС · 1.2.643.3.131.1.1 · ИНН Free-form · заявка без привязки к профилю ROLE · user → operator → admin Authorization: Bearer ownca_pat_…
// доступ и роли

Из одного оператора — в PKI масштаба компании с RBAC.

Три роли: user / operator / admin

Каждый аккаунт получает роль. Пользователь только отправляет заявки, оператор выпускает и отзывает, администратор управляет УЦ, профилями, реестрами и пользователями. Роль действует и в API.

Управление пользователями

Управление учётными записями и ролями (пользователи / операторы / администраторы).

Назначенные УЦ

Оператор имеет доступ только к явно назначенным ему профилям УЦ. Попытка выпустить через неназначенный УЦ запрещается.

Парольная политика

Отдельная страница в разделе «Система» с правилами сложности паролей для учётных записей — её нет в открытой версии, где раздел «Система» ограничен Configuration и Maintenance.

Разрешённые профили сертификатов

Для каждого УЦ задаётся свой список разрешённых профилей: в форме выпуска оператор видит только их, а выпуск с непривязанным профилем отклоняется.

Аудит действий пользователей

Журнал фиксирует действия учётных записей — вход, выпуск и отзыв сертификатов, перевыпуск CRL, изменения профилей, реестров и настроек УЦ — с привязкой к пользователю, времени и IP. Доступен администратору для разбора инцидентов и контроля.

// заявки и одобрение

Пользователи запрашивают — операторы одобряют и выпускают.

Заявки от пользователей

Пользователь отправляет заявку: CN, алгоритм, SAN, необязательный CSR и комментарий. Выбор УЦ и профиля скрыт — их назначает оператор при одобрении.

Очередь оператора

Оператор или админ видит очередь заявок с фильтром по статусу (pending / approved / rejected). Заявка в ожидании открывается как полная форма выпуска, предзаполненная данными заявки.

Импорт CSR в форме заявки

Импорт CSR с автозаполнением полей и баннером загрузки работает и в заявке пользователя — идентично странице оператора.

// доступ по API

Personal Access Token — автоматизация без браузера.

Доступ по API отключён по умолчанию и включается администратором для конкретного пользователя. Пользователь сам выпускает токен в своём профиле (один на аккаунт, хранится в виде хеша, плейнтекст показывается ровно один раз). Запросы идут с заголовком Authorization: Bearer ownca_pat_…; токен наследует роль своего владельца и сохраняет его IP-ограничения.

Панель API ACCESS

Админ включает API для пользователя одним переключателем. Отключение автоматически отзывает выпущенный токен.

Generate / Regenerate / Revoke

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

$ curlPAT API
# список доступных УЦ под Personal Access Token $ curl -H "Authorization: Bearer ownca_pat_…" \ https://ca.ownca.example/cas/ # перевыпуск CRL для конкретного УЦ $ curl -X POST -H "Authorization: Bearer ownca_pat_…" \ https://ca.ownca.example/cas/<uuid>/crl/generate/ # ответ {"status":"ok","crl_number":1007, "download_url":"/crls/<uuid>.crl"}
// безопасность выпуска

OTP и сетевые ограничения.

OTP-подтверждение выпуска и TOTP в профиле

В настройках администратор может включить обязательную проверку OTP. Тогда при выборе этого УЦ в форме выпуска и одобрения заявки появляется поле OTP code, а выпуск без верного кода отклоняется. Пользователь настраивает и подтверждает TOTP (например, через приложение-аутентификатор) в своём профиле.

IP-ограничения на пользователя

Список разрешённых подсетей задаётся на пользователя и действует и на браузерные сессии, и на вызовы по API — запросы вне разрешённых подсетей отклоняются независимо от валидности токена.

Строгий приоритет «профиль+форма > CSR»

Расширения из импортированного CSR (basicConstraints, KU, EKU, SAN) принудительно отбрасываются. В сертификат попадают только Subject из CSR, SAN из формы и расширения из выбранного профиля — «враждебный» CSR с CA:TRUE не протекает.

// реестры и квалифицированные профили

Отдельные страницы управления OID, политиками и КЭП-профилями.

Реестр Custom OIDs

Отдельная страница (для админа) управляет определениями OID/SAN-полей: OID, отображаемое имя, ASN.1-тип и место подстановки. Встроенный набор: DNS, IP, Email, URI, UPN, СНИЛС, ИНН, ОГРН, ОГРНИП.

Реестр Certificate Policies

Отдельная страница (для админа) управляет политиками для расширения certificatePolicies: OID, ссылка на CPS-документ и текст уведомления. Встроенные политики: КЭП ФЛ / ЮЛ / ИП.

Персональная тема оформления

В профиле пользователя — выбор трёх семейств тем (Default / Dark / Warm) со слайдером оттенка; настройка хранится за пользователем.

// открытая vs расширенная

Открытая версия — это базовый функционал. Расширенная — основа для корпоративного УЦ.

Расширенная версия добавляет управление пользователями, процессом выпуска и автоматизацией, роли, заявки, API-токены, OTP и аудит.

Расширенная версия распространяется по запросу. Чтобы её получить, напишите на cats.who.play@gmail.com

// интерфейс

Как выглядит расширенная версия.