Криптография: вместо «Установка ключа на флешку» — карточка «Ключ организации» (срок, заменить ключ)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
zuevav
2026-10-07 00:32:35 +03:00
parent a6153b3678
commit c6f0ed6a64
2 changed files with 32 additions and 4 deletions
+17
View File
@@ -62,6 +62,23 @@ var templateFuncs = template.FuncMap{
"smbWin": smbWin,
"smbView": smbView,
"pgLocal": pgDSNLocal,
// orgKeyCert — сертификат ключа организации (с закрытым ключом, действующий): для карточки «Ключ организации»
"orgKeyCert": func() map[string]any {
if globalRC == nil {
return nil
}
own := ownValidCerts(storeCertsForUI(globalRC.Snapshot()))
if len(own) == 0 {
return nil
}
c := own[0]
for _, x := range own[1:] { // самый долгий — тот, что в работе
if x.NotAfter.After(c.NotAfter) {
c = x
}
}
return map[string]any{"Owner": c.SubjectCN, "Issuer": c.IssuerCN, "Until": c.NotAfter.Format("02.01.2006"), "Days": certDaysLeft(c.NotAfter)}
},
// СКЗИ готова: Валидата установлена и ключ организации подключён (как шаги мастера «Валидата» и «Ключ»)
"cryptoReady": func() bool {
if globalRC == nil {
@@ -232,11 +232,22 @@
<h1>Криптография</h1>
{{template "verline" (.Versions.Get "crypto-service.jar")}}{{template "verline" (.Versions.Get "validata")}}{{template "verline" (.Versions.Get "java")}}
<div class="card" style="background:var(--accent-weak)">
<h2>Установка ключа на флешку</h2>
<p class="muted">Пошаговый мастер: загрузить архив НРД с паролем → запись на флешку → справочник сертификатов → проверка Валидаты → готово.</p>
<a href="/admin/setup/keywizard" class="btn btn-ok" style="margin-top:10px;display:inline-block">Открыть мастер установки ключа →</a>
{{$kc := orgKeyCert}}
{{if and cryptoReady $kc}}
<div class="card" id="sec-orgkey">
<h2><span class="dot {{if lt (index $kc "Days") 30}}warn{{else}}ok{{end}}"></span>Ключ организации</h2>
<p style="margin:6px 0">Сертификат «{{index $kc "Owner"}}», выдан: {{index $kc "Issuer"}} — действует до <b>{{index $kc "Until"}}</b> (осталось {{index $kc "Days"}} дн.).</p>
{{if lt (index $kc "Days") 30}}<p style="color:var(--warn);margin:6px 0">⚠ Сертификат скоро закончится. Получите новый ключ в Удостоверяющем центре Московской биржи и установите его — без этого обмен с НРД остановится.</p>
<a href="/admin/setup/keywizard" class="btn btn-ok" style="margin-top:6px;display:inline-block">Установить новый ключ →</a>
{{else}}<p class="muted" style="font-size:13px;margin:6px 0 0">Перевыпустили ключ (новый сертификат) или нужен ключ другого контура — <a href="/admin/setup/keywizard">заменить ключ</a>: bj поможет подключить флешку или записать новый ключ из архива.</p>{{end}}
</div>
{{else}}
<div class="card" style="background:var(--accent-weak)">
<h2>Ключ организации не подключён</h2>
<p class="muted">Пошаговая установка: флешка с ключом или архив ключа от НРД с паролем → справочник сертификатов → проверка подписи → готово.</p>
<a href="/admin/setup/keywizard" class="btn btn-ok" style="margin-top:10px;display:inline-block">Установить ключ →</a>
</div>
{{end}}
<div class="card">
<h2><span class="dot {{if cryptoReady}}ok{{else}}warn{{end}}"></span>СКЗИ «Валидата Клиент L»</h2>