Commit Graph

4 Commits

Author SHA1 Message Date
fontvielle 0ef75e05e8 feat(admin): импорт сертификатов через UI + список сертификатов на токенах + URL контуров НРД
После реальной установки КриптоПро CSP добавлены следующие
функциональности:

cryptocli/client.go:
- FindCertificates() — перечисляет CKO_CERTIFICATE объекты на всех
  подключенных слотах через PKCS#11, парсит X.509, извлекает CN, ИНН
  (OID 1.2.643.3.131.1.1), серийник, срок действия. Для каждого
  сертификата проверяет наличие парного приватного ключа (CKO_PRIVATE_KEY
  с тем же CKA_ID).
- Тип Certificate с полями: SubjectCN, IssuerCN, INN, Serial, NotBefore,
  NotAfter, DER, HasPrivateKey, TokenLabel, SlotID.

internal/lkgateway/setup.go:
- handler importCertificate (POST /admin/setup/crypto/import-cert,
  multipart). Принимает .pfx/.p12 (с PIN) или .cer/.crt. Запускает
  certmgr -inst -pfx или -inst с выбором хранилища (uMy/mroot/uRoot).
- listCertsForUI() — вспомогательный метод renderSetup для подгрузки
  актуального списка сертификатов с подключенных токенов при каждом
  открытии страницы.

internal/lkgateway/web/templates/admin_setup.html:
- секция «Сертификаты на токенах» с таблицей (Кому/Кем выдан/ИНН/срок/
  токен/есть-ли-приватный-ключ).
- форма «Импорт сертификата (.pfx/.cer/.crt)» с полями для PIN и
  выбора хранилища.
- блок «Интеграционный шлюз НРД»: добавлен JS автозаполнения URL ONYX
  и контейнера по выбору профиля (guest/test3/prod × gost/rsa) —
  значения из DOC/Ссылки для доступа в тестовые контуры.pdf.

internal/lkgateway/web/templates/admin_help_systems.html:
- секция «Интеграционный шлюз НРД и контуры тестирования» дополнена
  полной таблицей URL-ов сервисов GUEST/TEST3 (ONYX, Agate, DCS,
  Единый кабинет, Корпоративные действия). IP gost.nsd.ru для
  настройки межсетевого экрана.
- новая секция «Сертификаты УЦ НРД (для проверки квитанций)» с
  пошаговой инструкцией: куда импортировать корневой сертификат УЦ
  НРД, куда промежуточные, куда наши сертификаты из стороннего УЦ.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 15:34:32 +03:00
fontvielle 82b3186b95 feat(admin): загрузка дистрибутива КриптоПро через UI + активация лицензии
В карточке «СКЗИ» страницы /admin/setup добавлены два новых блока:

1. «Установка КриптоПро CSP» — multipart-форма с input type=file.
   Принимает .tar/.tgz/.tar.gz/.rpm (формат с cryptopro.ru). После
   загрузки на сервер (лимит 256 МБ):
   - сохраняет архив в /tmp/bj-cryptopro/
   - распаковывает (tar -xzf или tar -xf)
   - находит все .rpm в распакованной директории
   - выполняет sudo rpm -Uvh --replacepkgs --nosignature на найденные пакеты
   - возвращает результат с количеством установленных пакетов и выводом rpm

2. «Активация лицензии» — поле для ввода серийника и кнопка.
   Вызывает /opt/cprocsp/sbin/amd64/cpconfig -license -set <серийник>.
   Если cpconfig не найден — показывает подсказку про /admin/help/cryptopro.
   После успеха сохраняет серийник в runtime-конфиге.

internal/lkgateway/setup.go:
- handler installCryptoPro (multipart form, parse, untar, find rpms, sudo rpm)
- handler activateLicense (cpconfig -license -set, сохранение в RuntimeConfig)
- общие хелперы runCmd / runCmdInDir для exec через context

internal/lkgateway/web/templates/admin_setup.html:
- секция «Установка КриптоПро CSP» с формой загрузки
- секция «Активация лицензии» с полем + кнопкой
- ссылки на /admin/help/cryptopro и cryptopro.ru/products/csp/downloads

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 14:09:20 +03:00
fontvielle 660d71e21a fix(admin): обновить блок СКЗИ — убрать упоминания JCP, явно про PKCS#11
В карточке «Криптография» на странице /admin/setup остались упоминания
старой Java-реализации (КриптоПро JCP, путь к jcp.jar) — устаревшая
информация. Новый клиент работает напрямую через PKCS#11 (см. коммит
2e09e21).

internal/lkgateway/web/templates/admin_setup.html:
- Заголовок: «Криптография (КриптоПро JCP)» → «СКЗИ (КриптоПро CSP, Рутокен и др. через PKCS#11)»
- Опция «КриптоПро JCP» в селекте → «КриптоПро CSP (через PKCS#11)»
- Опция «Валидата JCP» → «Валидата»
- Добавлена опция «Рутокен ЭЦП 2.0 (для подписи оператора)»
- Поле «Путь к jcp.jar» → «Путь к модулю PKCS#11» с placeholder
  /opt/cprocsp/lib/amd64/libcppkcs11.so
- Поле «UDS-сокет» помечено как (legacy) — для совместимости со старым
  Java crypto-service
- Подпись «Лицензионный ключ» → «Серийный номер лицензии», placeholder
  типа реального серийника КриптоПро
- Описание под формой переписано: команды установки CSP и пути для
  Рутокен, ссылка на /admin/help/cryptopro

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 14:04:27 +03:00
fontvielle 958d777751 feat(lk-gateway): admin setup wizard — конфигурация подсистем через UI + тестовый прогон
Добавлена вкладка «Настройка» в admin-панели lk-gateway. Позволяет
ввести параметры каждой подсистемы прямо через веб-интерфейс,
проверить подключение и запустить тестовую заявку в один клик.

internal/lkgateway/runtimeconfig.go:
- Runtime-конфиг с персистом в JSON (BJ_SETUP_PATH или ~/.bj/setup.json)
- Поля: PostgresDSN, Crypto (provider/socket/jcp_path/license_key),
  NSD (profile/igw_base_url/key_container), LK (callback_url),
  LastTestRun (результат последнего тестового прогона)
- ReadinessSummary() для блока «Готовность системы: X из Y»

internal/lkgateway/setup.go:
- GET /admin/setup — страница настройки
- POST /admin/setup/postgres — DSN + sql.Ping (без pgx-драйвера упадёт
  на «unknown driver postgres», что покажет пользователю)
- POST /admin/setup/crypto — provider/socket/jcp.jar/лицензия, проверка
  существования файла jcp.jar
- POST /admin/setup/nsd — профиль/URL ИШ/контейнер, GET /healthz ИШ
- POST /admin/setup/lk — callback URL + GET /healthz эмулятора/ЛК
- POST /admin/setup/test-run — пробная сквозная заявка с предзаполнением
  (Иванов, 1500 акций Газпрома, ИИС T03), опрос статуса до финального

internal/lkgateway/web/templates/admin_setup.html:
- 4 карточки подсистем со статус-индикаторами (зелёная/красная точка)
- Inline-формы через <details>/<summary>: открыты для не настроенных,
  свёрнуты для уже настроенных
- Карточка «Тестовый прогон» с историей последнего результата
- Прогресс «Готовность системы: X из Y» в верхней части

internal/lkgateway/server.go:
- Server.rc *RuntimeConfig — поднимается при NewServer
- CheckOptions для admin-дашборда теперь берутся из runtime-конфига,
  а не только из ENV — изменения в /admin/setup сразу видны в /admin/
  и /admin/status без перезапуска

В layout.html добавлена nav-ссылка «Настройка», между «Дашборд» и
«Заявки».

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 11:30:48 +03:00