feat(admin): авто-загрузка сертификатов УЦ НРД + ежесуточное обновление

Новый раздел /admin/setup → «Сертификаты УЦ» (и в шаге 3 wizard'а): список
URL .cer-файлов УЦ (одна ссылка на строку). По кнопке «Скачать сейчас»
система качает каждый URL, парсит X.509, и через certmgr -inst импортирует
в mroot (если cert == issuer, т.е. корневой) или uRoot (промежуточный).

Дедуп по SHA-256: если файл по URL не изменился — повторного импорта нет.
В runtime-конфиге сохраняется журнал FetchedCerts (CN/SHA-256/срок/статус)
для отображения в UI.

Чекбокс «Авто-обновление раз в сутки» включает фоновую горутину
StartCACertsAutoUpdater — стартует через 30 сек после bj-server, потом
тикает раз в 24 часа. При изменении сертификата он переустанавливается
без участия оператора.

Mastered tasks: #44.
This commit is contained in:
fontvielle
2026-05-14 15:50:06 +03:00
parent cb0f7efd4c
commit 2142c4f586
6 changed files with 376 additions and 0 deletions
+4
View File
@@ -159,6 +159,10 @@ func (s *Server) Mux() http.Handler { return s.mux }
func (s *Server) Run(ctx context.Context) error {
go s.consumeDecisions(ctx)
// Авто-обновление сертификатов УЦ раз в сутки (если оператор включил).
stopCACerts := StartCACertsAutoUpdater(s.rc)
defer stopCACerts()
errCh := make(chan error, 1)
go func() {
log.Printf("lk-gateway: listen %s", s.cfg.Addr)