Криптография: вместо «Установка ключа на флешку» — карточка «Ключ организации» (срок, заменить ключ)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user