feat: живой цикл M2M с НРД + мастер установки ключа на флешку
Инфраструктура M2M (живой обмен с НРД через ИШ): - обработка M2MTransferResponse: ERROR(M2Mxx) → заявка Отклонена, сохранение ответа; INFO → ждём Decision; идемпотентность поллера - fallback-корреляция ответов с нулевым GUID (M2M14/M2M17) по FIFO - сырой XML ответа НРД в карточке заявки (для пересылки в ТП) - тестовый пакет роботу приведён к эталону m2m_robot_samples (CostInfo=Yes, 4 бумаги, IsolationStatus, DocumentSeries=сценарий); override паспорта - редирект из теста сразу в карточку заявки Мастер установки ключа Валидаты на флешку (admin/setup/keywizard): - пошаговый: загрузка .7z+пароль → выбор флешки → запись → справочник сертификатов (CRL) → перезапуск+проверка ИШ → готово - привилегированный воркер (bj-keymedia) в host-namespace через файл-обмен, bj-server остаётся в песочнице - сохранение структуры профиля архива (spr<N>), перечисление съёмных USB Прочее: - пакет-доказательство для ТП НРД + форма регистрации участника M2M - эталонные образцы робота (DOC/m2m_robot_samples) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
{{define "content"}}
|
||||
<div class="card">
|
||||
<h2>Криптография (АПК «Валидата Клиент L»)</h2>
|
||||
<p class="muted">bj-server общается с СКЗИ «Валидата Клиент L» через сайдкар <code>bj-crypto</code> по UDS <code>/run/bj/crypto.sock</code>. Чтобы подпись и проверка квитанций НРД заработали, нужен <strong>ключевой профиль</strong> — папка с тремя сущностями: <code>local.pse</code> (зашифрованный контейнер), <code>local.gdbm</code> (база сертификатов) и <code>vdkeys/*.vdk</code> (сам ключ).</p>
|
||||
<p class="muted"><strong>Архив от MOEX/НРД содержит «резервную копию», а не готовый профиль.</strong> На Linux рабочий <code>local.gdbm</code> нельзя восстановить headless — Валидата Linux требует GUI-операции «Восстановить справочники из резервной копии». Поэтому профиль готовится один раз на Windows и переносится на сервер через USB.</p>
|
||||
</div>
|
||||
|
||||
<div class="card" style="border-left:4px solid var(--accent)">
|
||||
<h2>Почему профиль готовится на Windows, а не на сервере</h2>
|
||||
<p>Боевой Astra Linux SE-сервер с ГОСТ-криптографией <strong>обязан быть headless</strong>: чем меньше пакетов и поверхности атаки, тем проще сертификация ФСТЭК и тем меньше нарушений требований к контуру ЭДО НРД. Установка GUI (X-сервер, GTK, шрифты, VNC/RDP) тянет 50+ пакетов, расширяет surface attack и усложняет аудит — поэтому отказались.</p>
|
||||
<p>Это <strong>стандартная практика</strong> в фин-секторе: на admin-станции (под Windows или отдельной защищённой ВМ) генерируются и обновляются профили; на боевые серверы они доставляются готовыми через выделенный USB или защищённый канал. Все инструкции MOEX/НРД написаны именно под Windows — этот путь поддерживается официально.</p>
|
||||
<p class="muted">Альтернативный путь — Linux GUI через X11-forwarding или VNC на дев-стенды — допустим только в песочнице, не в проде. На боевых серверах <code>zcs</code>/<code>vdcsp_cfg</code> не должны запускаться.</p>
|
||||
</div>
|
||||
|
||||
<div class="card" style="border-left:4px solid var(--ok)">
|
||||
<h2>✅ Подготовка профиля (Windows → USB → bj-server)</h2>
|
||||
|
||||
<h3 style="margin-top:14px">Шаг A — на компьютере под Windows</h3>
|
||||
<ol>
|
||||
<li><strong>Установите СКЗИ Валидата CSP для Windows</strong>.<br>
|
||||
Скачайте дистрибутив с <a href="https://www.moex.com/s1292" target="_blank" rel="noopener">moex.com/s1292</a> (раздел «СКЗИ для Windows», файл «Валидата CSP v.6.0.482.0 64bit»). Внутри архива есть <code>Readme.txt</code> с регистрационными данными — введите их во время установки.
|
||||
</li>
|
||||
|
||||
<li><strong>Распакуйте архив-профиль от MOEX/НРД</strong>.<br>
|
||||
Например <code>PrUser985.7z</code> с паролем <code>11</code> в папку <code>C:\moex-src\</code>. Получится структура:
|
||||
<pre style="font-size:12px">C:\moex-src\
|
||||
spr985\
|
||||
local.pse
|
||||
local.gdbm ← это «резервная копия», на Linux не работает напрямую
|
||||
vdkeys\
|
||||
XXXXXXXXXXXXXXXX.vdk
|
||||
key.reg</pre>
|
||||
</li>
|
||||
|
||||
<li><strong>Зарегистрируйте ключ в системе Windows</strong>.<br>
|
||||
Двойной клик по <code>key.reg</code> → «Да» на запрос о записи в реестр. Это нужно, чтобы Валидата увидела ключ при восстановлении справочников.
|
||||
</li>
|
||||
|
||||
<li><strong>Откройте «Справочник сертификатов x64»</strong> из меню «Пуск» → «АПК Валидата Клиент».</li>
|
||||
|
||||
<li><strong>Создайте профиль на флешке</strong>:
|
||||
<ul>
|
||||
<li>Вставьте чистую USB-флешку, запомните её букву (например <code>E:</code>).</li>
|
||||
<li>В Справочнике: меню <em>Профили</em> → <em>Настройка профилей</em> → <em>Добавить</em>.</li>
|
||||
<li>Имя профиля: например <code>moex</code>.</li>
|
||||
<li><strong>Каталог профиля</strong>: создайте новую пустую папку <strong>на флешке</strong>, например <code>E:\moex\</code>. Это путь, куда Валидата положит рабочую копию.</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li><strong>Восстановите справочники из резервной копии</strong>:<br>
|
||||
Меню <em>Сервис</em> → <em>Восстановить справочники из резервной копии</em>. В диалоге укажите папку <code>C:\moex-src\spr985\</code>. Дождитесь сообщения «Справочники восстановлены».<br>
|
||||
После этого в <code>E:\moex\</code> появятся <code>local.pse</code> и <strong>рабочий</strong> <code>local.gdbm</code> (отличается от исходной резервной копии).
|
||||
</li>
|
||||
|
||||
<li><strong>Скопируйте папку <code>vdkeys</code> на корень флешки</strong>.<br>
|
||||
Скопируйте папку <code>C:\moex-src\vdkeys\</code> в корень флешки. Итоговая структура:
|
||||
<pre style="font-size:12px">E:\
|
||||
moex\ ← рабочий профиль, созданный Валидатой
|
||||
local.pse
|
||||
local.gdbm ← теперь правильный
|
||||
vdkeys\
|
||||
XXXXXXXXXXXXXXXX.vdk</pre>
|
||||
</li>
|
||||
|
||||
<li><strong>Безопасно извлеките флешку</strong> через значок в системном трее Windows.</li>
|
||||
</ol>
|
||||
|
||||
<h3 style="margin-top:18px">Шаг B — на сервере (этот веб-интерфейс)</h3>
|
||||
<ol>
|
||||
<li><strong>Вставьте флешку в сервер</strong> (физический USB-порт или прокинутая через гипервизор виртуальная флешка).</li>
|
||||
|
||||
<li>Откройте <a href="/admin/setup">/admin/setup</a>. Через 2-3 секунды (автодетект монтирования) в блоке <strong>«Носители ключей»</strong> появится строка <code>🔌 USB /run/media/...</code>. Внутри неё — сабблок <strong>«Профиль Валидаты»</strong> с тремя строками: <code>local.pse</code> / <code>local.gdbm</code> / <code>*.vdk</code>.</li>
|
||||
|
||||
<li>В поле <strong>«Имя профиля»</strong> введите осмысленное имя (например <code>moex</code>) и нажмите <strong>«Импортировать профиль в Валидату»</strong>.<br>
|
||||
Сервер скопирует файлы в <code>/var/lib/bj/profiles/<имя>/</code>, допишет секцию в <code>/opt/Validata/VDCSP/etc/pki1.conf</code>. Toast подтвердит: «Секция дописана в pki1.conf».</li>
|
||||
|
||||
<li>В таблице <strong>«Импортированные профили Валидаты»</strong> ниже — нажмите <strong>«Активировать»</strong> в строке вашего профиля.<br>
|
||||
Toast: «Валидата: контекст с профилем <имя> инициализирован» → готово.</li>
|
||||
|
||||
<li>Можно извлекать флешку — все нужные файлы уже скопированы в <code>/var/lib/bj/profiles/</code>.</li>
|
||||
</ol>
|
||||
|
||||
<h3 style="margin-top:18px">Проверка</h3>
|
||||
<ol>
|
||||
<li>В блоке «СКЗИ» нажмите зелёную кнопку <strong>«✓ Проверить подключение СКЗИ»</strong>.</li>
|
||||
<li>Toast должен показать что-то вроде: <code>СКЗИ validata: 0.1.0 (Валидата: контекст с профилем «moex» инициализирован)</code>.</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h2>Что делать если профиль на флешке не виден</h2>
|
||||
<ul>
|
||||
<li><strong>USB не монтируется автоматически в Astra Linux SE.</strong> Подключите вручную: посмотрите <code>lsblk</code>, потом <code>sudo mount /dev/sdb1 /mnt</code>. Через секунду «Носители ключей» подхватит точку монтирования.</li>
|
||||
<li><strong>Файлы лежат не в корне флешки.</strong> Сканер ищет в глубину 4 уровня — если поместили в <code>E:\very\deep\folder\moex\</code>, должно тоже найтись.</li>
|
||||
<li><strong>На флешке нет <code>vdkeys\</code>.</strong> Без неё профиль не работает — ключ <code>.vdk</code> обязателен.</li>
|
||||
<li><strong>«Ни контейнеров, ни сертификатов, ни профиля Валидаты не найдено».</strong> Это значит на носителе нет <em>одновременно</em> <code>.pse</code> и <code>.vdk</code> файлов. Перепроверьте Шаг 6-7 на Windows.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h2>Альтернатива: загрузка как ZIP-архив</h2>
|
||||
<p>Если USB-доступ к серверу неудобен — можно собрать содержимое флешки в обычный <code>.zip</code> на Windows и загрузить через web-форму.</p>
|
||||
<ol>
|
||||
<li>После шага A.7 (когда на флешке готовая структура <code>moex\</code> + <code>vdkeys\</code>) — выделите обе папки, правый клик → <em>Отправить</em> → <em>Сжатая ZIP-папка</em>.</li>
|
||||
<li>На сервере: <a href="/admin/setup">/admin/setup</a> → «Носители ключей» → форма «Загрузить образ или архив» → выберите ZIP, поле «Пароль» оставьте пустым.</li>
|
||||
<li>Дальше как в Шаге B со 2-го пункта.</li>
|
||||
</ol>
|
||||
<p class="muted">Под капотом сервер распаковывает архив через <code>7z</code> в <code>/var/lib/bj/media/iso/</code>, сканирует на профиль Валидаты — далее всё то же самое, что с USB.</p>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h2>Справочные команды (диагностика)</h2>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr><td><code>systemctl status bj-crypto</code></td><td>Состояние Java-сайдкара (UDS-сокет, провайдер).</td></tr>
|
||||
<tr><td><code>sudo journalctl -u bj-crypto -n 50</code></td><td>Последние строки лога сайдкара.</td></tr>
|
||||
<tr><td><code>cat /opt/Validata/VDCSP/etc/pki1.conf</code></td><td>Список профилей, которые видит Валидата (наши секции помечены <code># --- bj-server: профиль ...</code>).</td></tr>
|
||||
<tr><td><code>sudo ls -la /var/lib/bj/profiles/</code></td><td>Импортированные профили на сервере.</td></tr>
|
||||
<tr><td><code>/opt/Validata/VDCSP/bin/amd64/testcsp -silent</code></td><td>Базовая проверка провайдера CSP.</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h2>Установка Валидаты на сервер (если её ещё нет)</h2>
|
||||
<p class="muted">Если этот раздел вам не показывает «✓ ready» — повторите установку:</p>
|
||||
<pre>curl -fsSL https://fs.moex.com/cdp/po/ClientL_ALSE.zip -o ClientL_ALSE.zip
|
||||
unzip ClientL_ALSE.zip
|
||||
sudo apt-get install -y libccid pcscd execstack
|
||||
sudo dpkg -i ClientL_ALSE/zpki-*.deb ClientL_ALSE/zsdk-*.deb
|
||||
sudo apt-get -f install -y
|
||||
sudo execstack -c /opt/Validata/VDCSP/lib/amd64/libvdcsp.so
|
||||
sudo systemctl enable --now pcscd</pre>
|
||||
<p class="muted">Дистрибутив для Astra Linux SE — <a href="https://fs.moex.com/cdp/po/ClientL_ALSE.zip" target="_blank" rel="noopener">fs.moex.com/cdp/po/ClientL_ALSE.zip</a>. Linux-версия отдельной лицензии не требует.</p>
|
||||
</div>
|
||||
{{end}}
|
||||
Reference in New Issue
Block a user