После реальной установки КриптоПро 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>
В карточке «СКЗИ» страницы /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>
В карточке «Криптография» на странице /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>
Добавлена вкладка «Настройка» в 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>