[DOCS] Salvataggio contesto: TLS DB #9 DONE (sign-off VIGILE) + scoperta prod su php-fpm host

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile
2026-06-17 00:02:45 +02:00
co-authored by Claude Opus 4.8
parent d583acf9cd
commit 1ce5fb485f
+2 -1
View File
@@ -28,7 +28,8 @@ Chiuso l'ultimo punto di Simon. Memoria: [[project-epic-c-simon]]. Tutto deploya
### Chiusura open-items (commit `69873e2`, v1.21.3) — "fai il massimo"
- 🟢 **#7 — invio email AGGANCIATO e pronto al go-live (GATED)**: `send()` invia il magic-link via `EmailService` SOLO se `EMAIL_SENDING_ENABLED=true`. Oggi è **false** (default, non in `.env`) → **zero invii** (smoke prod: `email_sent=0`). Al go-live basta settare il flag. Link assoluto via `APP_URL`. I link restano sempre esposti per condivisione manuale.
- 🟢 **#8 — `EMAIL_MS_URL` spostato sul path interno** `http://172.21.0.1:8081/api/emails` (host `.env`, fuori repo). Verificato **400 con `X-Internal-Key`** = funzionante (pre edge-strip). Rollback: rimettere l'URL pubblico. (Inattivo finché email off.)
- 🟢 **#9 — pre-equip PHP-CA DB COMPLETO (parte del prodotto)**: l'app si connette in **TLS 1.3** (CA `application/config/db-ca.pem` + `PDO::MYSQL_ATTR_SSL_CA`). Verificato `cipher=TLS_AES_256_GCM_SHA384`. ⚠️ `nis2_user@%` NON ha ancora `REQUIRE SSL` server-side → **enforce = azione DB coordinata con VIGILE** (utente `@%`, rischio consumer non-TLS ignoti). Non eseguito unilateralmente; ora de-rischiato (l'app già usa TLS).
- 🟢 **#9 — TLS DB: DONE (sign-off VIGILE, commit `d583acf`)**. Pre-equip PHP-CA del prodotto fatto (app in **TLS 1.3**, `cipher=TLS_AES_256_GCM_SHA384`, CA `application/config/db-ca.pem`). Enforce `REQUIRE SSL` su `nis2_user@'%'` **già attivo dall'11/6** (applicato da VIGILE nel cutover container; `ssl_type=ANY`) — **confermato indipendentemente** da NIS2-side con `SHOW CREATE USER`. Il mio precedente "non enforced" era **falso allarme**: in **MySQL 8.0 `SHOW GRANTS` NON mostra `REQUIRE`** (solo `SHOW CREATE USER`). Ciclo: richiesta `OUTGOING_TO_AGILEHUB_2026_06_16` → conferma `INCOMING_FROM_AGILEHUB_2026_06_16_tls_enforce_gia_attivo.md`. CLAUDE.md testata → DONE.
- 🧭 **Scoperta architetturale (importante)**: il **PROD** `nis2.agile.software` è servito da **Apache HOST → php-fpm HOST** (`/run/php/php8.4-fpm.sock`, DocumentRoot `public/`, utente `www-data` host), **NON** dal container `nis2-app` (che serve solo la dev-API). Quindi: reload .php prod = `systemctl reload php8.4-fpm` sull'host (USR2 al container = solo dev-API; host ha `validate_timestamps=On`); `public/uploads` scritto da www-data host (da cui il fix ACL). Memoria: [[project-prod-topology-host-fpm]].
- ⏭️ **#6 nginx Content-Disposition /uploads/**: skip motivato (allowlist chiude la XSS; forzerebbe download dei PDF). Applicabile via `restart` (nginx.conf bind-mount) se richiesto.
- 🧪 **#4 collaudo E2E browser C1–C5**: resta task umano dei tester. Best-effort fatto: render-smoke pagine C5 (200 + marker DOM OK). QA visivo umano comunque raccomandato.