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>
This commit is contained in:
fontvielle
2026-05-14 15:34:32 +03:00
parent 3e34995e69
commit 0ef75e05e8
4 changed files with 373 additions and 38 deletions
@@ -7,27 +7,64 @@
</div>
<div class="card">
<h2>1. Интеграционный шлюз НРД (ИШ)</h2>
<p>Основной канал отправки M2M-сообщений в НРД. ИШ сам подписывает пакеты ЭДО, нам криптография в этом канале не нужна.</p>
<p><strong>Профили</strong> (см. <a href="/admin/setup">Настройка → Интеграционный шлюз НРД</a>):</p>
<h2>1. Интеграционный шлюз НРД (ИШ) и контуры тестирования</h2>
<p>Основной канал отправки M2M-сообщений в НРД — Web-сервис <strong>ONYX</strong> через ИШ. ИШ сам подписывает пакеты ЭДО, поэтому в этом канале нам криптография не требуется. Дистрибутив ИШ скачивается с сайта НРД: <code>www.nsd.ru/workflow/system/programs/#0-widget-faq-0-4</code></p>
<p>Адреса контуров (из <code>DOC/Ссылки для доступа в тестовые контуры.pdf</code>):</p>
<table>
<thead><tr><th>Профиль</th><th>Среда</th><th>Криптография</th></tr></thead>
<thead><tr><th>Сервис</th><th>GUEST · ГОСТ</th><th>GUEST · RSA</th><th>TEST3 · ГОСТ</th><th>TEST3 · RSA</th></tr></thead>
<tbody>
<tr><td><code>guest-gost</code></td><td>Гостевой контур (без проверок)</td><td>ГОСТ Р 34.10-2012</td></tr>
<tr><td><code>guest-rsa</code></td><td>Гостевой контур</td><td>RSA</td></tr>
<tr><td><code>test3-gost</code></td><td>Тестовый контур TEST3</td><td>ГОСТ</td></tr>
<tr><td><code>test3-rsa</code></td><td>TEST3</td><td>RSA</td></tr>
<tr><td><code>prod-gost</code></td><td>Продуктивный</td><td>ГОСТ</td></tr>
<tr><td><code>prod-rsa</code></td><td>Продуктивный</td><td>RSA</td></tr>
<tr>
<td><strong>WEB-сервис ONYX</strong> (нужен нам)</td>
<td><code>gost-gt.nsd.ru</code></td>
<td><code>rsa-gt.nsd.ru</code></td>
<td><code>gost-t3.nsd.ru</code></td>
<td><code>rsa-t3.nsd.ru</code></td>
</tr>
<tr>
<td>Единый кабинет администратора НРДирект</td>
<td colspan="2"><code>cabinet-gt.nsd.ru/wr-admin/</code></td>
<td colspan="2"><code>cabinet-t3.nsd.ru/wr-admin/</code></td>
</tr>
<tr>
<td>WEB-сервис Agate (WSAlameda)</td>
<td colspan="2"><code>gost-gt.nsd.ru/WSAlamedags/</code> · <code>rsa-gt.nsd.ru/WSAlamedags/</code></td>
<td colspan="2"><code>gost-t3.nsd.ru/WSAlameda/</code> · <code>rsa-t3.nsd.ru/WSAlameda/</code></td>
</tr>
<tr>
<td>Депозитарно-клиринговых услуг (новый)</td>
<td colspan="2" class="muted">отсутствует</td>
<td><code>cabinet-t3.nsd.ru/dcs_new/</code></td>
<td class="muted"></td>
</tr>
</tbody>
</table>
<p class="muted">Полный URL WSL для ONYX: <code>https://&lt;host&gt;/onyx-ms/OnyxEdoWSService/OnyxEdo</code>. Для прод-контура ссылки опубликованы в Анкете НРД ЭДО (<code>anketa_nrd_edo_2022_07_11.pdf</code> на сайте НРД). IP <code>gost.nsd.ru</code> — 91.208.232.151 (для настройки межсетевого экрана).</p>
<p><strong>Что указать в Настройка → ИШ:</strong></p>
<ul>
<li>Профиль (например, <code>test3-gost</code>)</li>
<li>URL ИШ — обычно <code>http://localhost:8080</code> если ИШ установлен на той же ВМ</li>
<li>Ключевой контейнер — имя на стороне ИШ, например <code>TEST3_GOST_CONTAINER</code></li>
<li>Профиль (например, <code>test3-gost</code>) — при выборе URL и контейнер заполняются автоматически</li>
<li>URL ONYX — например <code>https://gost-t3.nsd.ru/onyx-ms/OnyxEdoWSService/OnyxEdo</code></li>
<li>Ключевой контейнер — имя контейнера КриптоПро с ключами ЭДО НРД (выдаются УЦ НРД, см. ниже)</li>
</ul>
<p class="muted">Без настроенного ИШ система работает в <strong>mock-режиме</strong>: bj-server эмитирует синтетический Decision через 3 секунды для каждой заявки. Это удобно для дев-демо и не требует подключения к НРД.</p>
</div>
<div class="card">
<h2>1а. Сертификаты УЦ НРД (для проверки квитанций)</h2>
<p>НРД подписывает все исходящие пакеты ЭДО ГОСТ-подписью своего УЦ. Для проверки этих подписей на нашей стороне нужно импортировать корневые сертификаты УЦ НРД в хранилище <code>mroot</code> (доверенные корневые).</p>
<ol>
<li>Скачать сертификаты с сайта УЦ НРД: <code>www.nsd.ru/workflow/system/cryptography/</code> (или из дистрибутива ИШ).</li>
<li>В <a href="/admin/setup">/admin/setup</a> → раздел «Импорт сертификата» → выбрать файл <code>.cer</code>, тип хранилища <code>mroot — корневой УЦ</code>, нажать «Импортировать». Под капотом выполняется <code>certmgr -inst -file root.cer -store mroot</code>.</li>
<li>Промежуточные сертификаты УЦ — в хранилище <code>uRoot</code>.</li>
<li>Для проверки подписей самой системы НРД (квитанции ЭДО) — импортировать сертификат подписи НРД в <code>uMy</code> (как корреспондента), либо оставить в <code>mroot</code>, если он самоподписной.</li>
</ol>
<p><strong>Наши сертификаты для отправки в НРД</strong> (получаются из другого УЦ — нашей организации):</p>
<ol>
<li>Сертификат подписи нашей организации (с приватным ключом в виде <code>.pfx</code>/<code>.p12</code> или на Рутокен) — импортировать в <code>uMy</code> с PIN.</li>
<li>Цепочка сертификатов вашего УЦ — в <code>mroot</code> (корневой) и <code>uRoot</code> (промежуточные).</li>
<li>После импорта проверить: <code>certmgr -list -store uMy</code> и <code>cpverify</code>.</li>
</ol>
<p class="muted">Полный цикл обмена сертификатами с НРД описан в <code>DOC/Инструкция M2M.pdf</code> и <code>DOC/Презентация MOEX MOST.pdf</code>.</p>
</div>
<p><strong>Документация по подключению</strong>: <code>DOC/instr_podkl_stend_v3.pdf</code>, <code>DOC/Ссылки для доступа в тестовые контуры.pdf</code>.</p>
</div>