fix(ipsec): проверять CRL-цепочку до удаления identity

This commit is contained in:
Denozordec committed 2026-10-11 02:56:09 +07:00
1 parent a31a65fbe6
commit 7867914cbc
9 files changed
+349 -14

No files matched your search

+16 -2
View File
@@ -1,6 +1,6 @@
# Тестовый сервер UX/UI — 2026-10-10
Сервер161.104.46.222: завершён12.5.126 — при собственной CRL цепочке и временном crl-use/download=yes валидный client Ping3/3, отозванный reconnect AUTH_FAILED/API offline. Settings возвращены, baseline17×2/Docker/credentials restored. Первый cleanup issued leaf failed; проверенная own CA cascade recovery и итоговое повторение прошли. Backend ux-san121/frontend ux-ike124. Следующий127 — preflight удаления CRL-issued cert/CA до операций.12.5 открыт.
Сервер161.104.46.222: завершён12.5.127 — preflight CRL-issued/revoked leaf и CA children409 до writes, force не обходит цепочку; identity-only200 сохраняетcerts.8 IPsec scripts/127 state/13 новых HTTP cases/build/ESLint;7 native refusals+1 preserve delete. Backend ux-crl127/frontend ux-ike124, hashes совпали, settings/baseline17×2/Docker/credentials restored. Первый initial Ping failed сохранён; следующий128 — time-invalid certificates.12.5 открыт.
| Параметр | Проверенное состояние |
| --- | --- |
@@ -14,7 +14,7 @@
| PostgreSQL | postgres:18-alpine,18.6;mmapp-test-postgres healthy;SELECT version() passed |
| Данные | Отдельный Compose project mmapp-test,том mmapp-test_mmapp-pgdata и каталог ./data |
| Доступ | PostgreSQL не публикуется;frontend3000/backend8000 привязаны к127.0.0.1 после запуска |
| Образы приложения | mmapp-test/backend:ux-san121 и mmapp-test/frontend:ux-ike124; запущены |
| Образы приложения | mmapp-test/backend:ux-crl127 и mmapp-test/frontend:ux-ike124; запущены |
Compose SHA256:3052bd6ab5d9865f97605cebfb5ff27a4410cd3357b81153a65a87fb7c92582f. OptionalBACKEND_IMAGE_TAG позволяетобновлятьbackendотдельно. Локальный и удалённый файлы совпали. Шаблоны: [Compose](../deploy/docker-compose.test.yml), [env без секретов](../deploy/env.test.example).
@@ -1064,3 +1064,17 @@ Reference: [Certificates/CRL](https://manual.mikrotik.com/docs/authentication-au
| Референс | Схема |
| --- | --- |
| [ReUI List9](https://reui.io/preview/base/list-9?ref=mcp) | CA/CRL policy → валидный клиент → отзыв → reconnect отказ → возврат исходных settings |
## 12.5.127 — удаление CRL-issued сертификатов без частичных изменений (2026-10-11)
Исправлена выявленная126 последовательность: перед удалением identity API проверяет явно привязанный cert/issuer. Локально issued либо revoked certificate CA с crl=true получает409 до любых writes. Пользователь может удалить только identity с removeCertificate=false. В /ipsec/certs дополнительно запрещено отдельное удаление CA с дочерними certs: RouterOS каскадно удаляет цепочку, поэтому force=true это ограничение не обходит. Автоматический отзыв/удаление чужой цепочки не добавлялся. Imported non-issued/non-revoked leaf сохраняет прежний сценарий удаления.
Добавлены13 профильных HTTP cases с нулевыми writes/history при отказе, сохранением cert при identity-only, обеими issued/revoked формами native metadata, CA force guard и положительным imported случаем. Прошли8 IPsec scripts (state127), backend production build/scoped ESLint. Backend ux-crl127/version1.0.0-test.crl127 собран из121 с одним route override; локальные и серверные source/compiled SHA256 совпали. Frontend ux-ike124 сохранён, backup pre-crl127.env/прежний image оставлены. DTO/vendor не менялись.
Native собственная CRL chain: семь409 (user/cert targets, direct leaf/CA с/безforce и revoked leaf) сохранили certs; до identity-only identity также оставалась. Identity-only200 удалил выбранную identity, сохранил все3 certs. Первый control остановился на Ping3/3 без достаточной диагностики; cleanup прошёл, отказ сохранён. Повторение проверяло выданный native VIP и записывало bounded Ping attempts, затем завершило API-сценарии. Мгновенная связность/SLA не заявляется.
Settings восстановлены точно, own CA cascade после проверки всех детей/ссылок очистил только собственную цепочку; baseline17×2/Docker/private credentials restored. Оба CHR доступны, пароли/default/public/metadata/195.195.195.195/32 сохранены. UI и общая регрессия117 повторно не запускались: guards/backend-only, сохранение modal при API error уже принято предыдущими UI блоками. [Протокол](ux-ui/acceptance/ipsec-crl-delete-preflight-2026-10-11.json). Следующий128 — expired/not-yet-valid certs без изменения часов.
| Референс | Схема |
| --- | --- |
| [ReUI Sheet8](https://reui.io/preview/base/sheet-8?ref=mcp) | Проверка cert/CA →409 без изменений → выбор сохранить cert → подтверждённое identity-only удаление |