feat(admin): копирование контейнеров КриптоПро с флешки в HDIMAGE + уточнение PKI по докам НРД
Сканирование смонтированных USB-носителей (/run/media/$USER, /media, /mnt) на папки вида name.000 с *.key — это «контейнер КриптоПро на флешке». В шаге 3 wizard'а и в /admin/setup появилась таблица найденных контейнеров с кнопкой «Скопировать в локальное хранилище» (копирует папку в /var/opt/cprocsp/keys/$USER/, после чего контейнер виден как \\.\HDIMAGE\name и работает без вставленной флешки). Дедуп по AlreadyImported — если папка уже есть в HDIMAGE, кнопка не показывается. Сертификат из контейнера импортируется отдельно через certmgr -inst -cont (это пока вне UI, подсказка в текст flash-сообщения). Кроме того — переписан help-блок в шаге 3 wizard'a на основании «Инструккия M2M.pdf» (стр. 11, 16-19): явно расписано, что в режиме ИШ подписывает сам ИШ (наш ключ в ИШ), а в режиме прямого ONYX — bj-server. Таблица «что куда грузить»: УЦ МБ в mroot, УЦ НРД в mroot+uRoot, наш сертификат в uMy только если без ИШ. Сертификаты с Рутокена явно отмечены как «не грузить — сами появятся».
This commit is contained in:
@@ -147,6 +147,37 @@
|
||||
</details>
|
||||
</div>
|
||||
|
||||
<!-- Контейнеры КриптоПро на флешке -->
|
||||
<div class="card">
|
||||
<h2><span class="dot {{if .FlashContainers}}ok{{else}}warn{{end}}"></span>Контейнеры на USB-носителях (флешка/Рутокен)</h2>
|
||||
{{if .FlashContainers}}
|
||||
<p class="muted">Найдено {{len .FlashContainers}} контейнер(а) формата <code>name.000</code> на смонтированных USB-носителях. Кнопка ниже копирует папку в <code>/var/opt/cprocsp/keys/$USER/</code> — после этого контейнер виден как <code>\\.\HDIMAGE\name</code> и работает без вставленной флешки.</p>
|
||||
<table style="margin-top:8px">
|
||||
<thead><tr><th>Носитель</th><th>Имя контейнера</th><th>Файлы</th><th>Статус</th><th></th></tr></thead>
|
||||
<tbody>
|
||||
{{range .FlashContainers}}
|
||||
<tr>
|
||||
<td><code style="font-size:12px">{{.Mountpoint}}</code></td>
|
||||
<td><strong>{{.Name}}</strong></td>
|
||||
<td><span class="muted" style="font-size:11px">{{len .Files}} файлов</span></td>
|
||||
<td>{{if .AlreadyImported}}<span style="color:var(--ok)">уже в HDIMAGE</span>{{else}}<span class="muted">только на флешке</span>{{end}}</td>
|
||||
<td>
|
||||
{{if not .AlreadyImported}}
|
||||
<form method="post" action="/admin/setup/crypto/copy-container" style="margin:0">
|
||||
<input type="hidden" name="src" value="{{.Path}}">
|
||||
<button type="submit" class="btn" style="background:var(--ok);color:#0a0f1a;padding:6px 12px;font-size:12px;font-weight:600">Скопировать в локальное хранилище</button>
|
||||
</form>
|
||||
{{end}}
|
||||
</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</tbody>
|
||||
</table>
|
||||
{{else}}
|
||||
<p class="muted">Подключённые USB-носители с контейнерами КриптоПро (папки <code>name.000</code> с *.key) не обнаружены. Поиск идёт в <code>/run/media/$USER/</code>, <code>/media/$USER/</code>, <code>/media/</code>, <code>/mnt/</code>. Вставьте флешку и обновите страницу.</p>
|
||||
{{end}}
|
||||
</div>
|
||||
|
||||
<!-- Авто-загрузка сертификатов УЦ НРД -->
|
||||
<div class="card">
|
||||
<h2><span class="dot {{if .Settings.CACerts.URLs}}ok{{else}}warn{{end}}"></span>Сертификаты УЦ (НРД и др.) — авто-загрузка</h2>
|
||||
|
||||
@@ -150,13 +150,23 @@
|
||||
<p>Импортируйте сертификаты вашей организации и сертификаты УЦ НРД (для проверки квитанций).</p>
|
||||
|
||||
<div class="help-block">
|
||||
<strong>Какие сертификаты нужны?</strong>
|
||||
<ol style="margin:6px 0 0 16px">
|
||||
<li>Ваш сертификат организации с приватным ключом (<code>.pfx</code> / <code>.p12</code> на диске или контейнер на Рутокене) — для подписи отправляемых пакетов.</li>
|
||||
<li>Корневой сертификат вашего УЦ (<code>.cer</code>) — в хранилище <code>mroot</code>.</li>
|
||||
<li>Корневой и подписной сертификаты УЦ НРД — для проверки квитанций. Скачиваются с <a href="https://www.nsd.ru/workflow/system/cryptography/" target="_blank">nsd.ru/workflow/system/cryptography/</a></li>
|
||||
</ol>
|
||||
<strong>Где взять?</strong> Сертификат вашей организации — у вашего УЦ (Контур, СКБ Контур, ИнфоТеКС, КриптоПро УЦ, …). Сертификаты УЦ НРД — на сайте НРД (см. выше).
|
||||
<strong>Что говорят документы НРД (<code>DOC/Инструккия M2M.pdf</code>, стр. 11, 16-19):</strong>
|
||||
<ul style="margin:6px 0 6px 16px">
|
||||
<li>Наши пакеты должны быть подписаны сертификатом <strong>УЦ МБ</strong> (Удостоверяющий центр Московской Биржи).</li>
|
||||
<li>В режиме <strong>ИШ НРД</strong>: подписывает <em>сам ИШ</em> — наш ключ настраивается <em>в ИШ</em>, не здесь. Bj-server нужен только для проверки квитанций НРД и (опц.) расшифровки 4BROKER01.</li>
|
||||
<li>В режиме <strong>прямого ONYX без ИШ</strong>: bj-server подписывает сам — нужен наш ключ с приватной частью.</li>
|
||||
</ul>
|
||||
<strong>Что куда загружать (по режиму):</strong>
|
||||
<table style="margin-top:6px;font-size:13px">
|
||||
<thead><tr><th>Что</th><th>Зачем</th><th>Куда</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>Корневой сертификат <strong>УЦ МБ</strong> (<a href="https://ca.moex.com/" target="_blank">ca.moex.com</a>)</td><td>проверка цепочки нашей подписи и подписей контрагентов</td><td><code>mroot</code></td></tr>
|
||||
<tr><td>Корневой и подписной <strong>УЦ НРД</strong> (<a href="https://www.nsd.ru/workflow/system/cryptography/" target="_blank">nsd.ru/workflow/system/cryptography/</a>)</td><td>проверка квитанций от НРД</td><td><code>mroot</code> + <code>uRoot</code></td></tr>
|
||||
<tr><td>Наш сертификат + ключ <em>(только если без ИШ)</em></td><td>подпись отправляемых пакетов + расшифровка 4BROKER01</td><td><code>uMy</code> — с приватным ключом</td></tr>
|
||||
<tr><td>Сертификаты с Рутокена</td><td>сами появятся в таблице ниже после подключения USB</td><td>не грузить</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="muted" style="margin-top:6px">Полный регламент PKI — в «Правилах ЭДО НРД» и «Руководстве по установке ИШ» (<a href="https://www.nsd.ru/ru/documents/workflow/" target="_blank">nsd.ru/ru/documents/workflow/</a>) — в наших PDF этого не описано.</p>
|
||||
</div>
|
||||
|
||||
<h3 style="margin-top:18px">Импорт сертификата</h3>
|
||||
@@ -181,6 +191,35 @@
|
||||
<button type="submit" class="btn">Импортировать</button>
|
||||
</form>
|
||||
|
||||
<h3 style="margin-top:18px">Контейнеры на подключённых носителях (флешка/Рутокен)</h3>
|
||||
{{if .FlashContainers}}
|
||||
<p class="muted">Найдено {{len .FlashContainers}} контейнер(а) формата <code>name.000</code> на смонтированных USB-носителях. Нажмите «Скопировать в локальное хранилище» — папка будет перенесена в <code>/var/opt/cprocsp/keys/$USER/</code>, после чего контейнер виден как <code>\\.\HDIMAGE\name</code> и работает даже без вставленной флешки.</p>
|
||||
<table style="margin-top:8px">
|
||||
<thead><tr><th>Носитель</th><th>Имя контейнера</th><th>Файлы</th><th>Статус</th><th></th></tr></thead>
|
||||
<tbody>
|
||||
{{range .FlashContainers}}
|
||||
<tr>
|
||||
<td><code style="font-size:12px">{{.Mountpoint}}</code></td>
|
||||
<td><strong>{{.Name}}</strong></td>
|
||||
<td><span class="muted" style="font-size:11px">{{len .Files}} файлов</span></td>
|
||||
<td>{{if .AlreadyImported}}<span style="color:var(--ok)">уже в HDIMAGE</span>{{else}}<span class="muted">только на флешке</span>{{end}}</td>
|
||||
<td>
|
||||
{{if not .AlreadyImported}}
|
||||
<form method="post" action="/admin/setup/crypto/copy-container" style="margin:0">
|
||||
<input type="hidden" name="src" value="{{.Path}}">
|
||||
<button type="submit" class="btn" style="background:var(--ok);padding:6px 12px;font-size:12px">Скопировать в локальное хранилище</button>
|
||||
</form>
|
||||
{{end}}
|
||||
</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="muted" style="margin-top:8px">После копирования: импортировать сертификат из контейнера командой <code>certmgr -inst -cont '\\.\HDIMAGE\{имя}' -store uMy</code> — это пропишет сертификат в видимое хранилище. (UI-кнопку для этого добавим следующим шагом.)</p>
|
||||
{{else}}
|
||||
<p class="muted">Подключённые USB-носители с контейнерами КриптоПро формата <code>name.000</code> не обнаружены. Поиск идёт в <code>/run/media/$USER/</code>, <code>/media/$USER/</code>, <code>/media/</code>, <code>/mnt/</code>. Вставьте флешку с контейнером и обновите страницу — контейнер появится в этой таблице автоматически.</p>
|
||||
{{end}}
|
||||
|
||||
<h3 style="margin-top:18px">Авто-загрузка сертификатов УЦ НРД</h3>
|
||||
<p class="muted">Самый простой способ — добавить прямые URL <code>.cer</code>-файлов УЦ НРД (с <a href="https://www.nsd.ru/workflow/system/cryptography/" target="_blank" rel="noopener">nsd.ru/workflow/system/cryptography/</a>) и включить авто-обновление. Раз в сутки система перепроверит и переустановит изменённые сертификаты.</p>
|
||||
<form method="post" action="/admin/setup/cacerts" style="margin-top:8px;display:grid;gap:10px">
|
||||
|
||||
Reference in New Issue
Block a user