feat(vm201): wildcard *.roa auto-renew via cPanel DNS-01 hook

Fix expirare cert wildcard *.roa.romfast.ro (incident 2026-05-31):
renewal-ul era [Manual] DNS-01, nu rula din Scheduled Task -> 61 erori
-> expirat. Subdomeniile Dokploy (efactura.roa etc.) dadeau
ERR_CERT_DATE_INVALID.

- cpanel-acme-dns.ps1: hook win-ACME DNS-01 (cPanel UAPI mass_edit_zone,
  fallback ZoneEdit) care pune/sterge TXT _acme-challenge automat
- cpanel-dns.config.example.json: template (token-ul real e gitignored)
- monitor-ssl-certificates.sh: sentinel efactura.roa (wildcard) + alerta
  in loc de auto-renew prin guest-exec (dezactivat)
- README + doc cert: flux DNS-01 cPanel + acces OpenSSH VM 201

Renewal nou roa-wildcard-cpanel, auto, due 2026-08-19; vechiul [Manual]
anulat. Cert live valid pana 2026-09-23.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-06-25 13:23:54 +00:00
parent e8d1889364
commit a41e9d81cf
6 changed files with 305 additions and 3 deletions

View File

@@ -166,7 +166,12 @@ format manifest, workflow publicare, riscuri backup).
- **Locație:** `C:\Tools\win-acme\`
- **Scop:** Certificate Let's Encrypt automate
- **Task Scheduler:** Reînnoire automată zilnică (verificare)
- **Certificate Storage:** LocalMachine\My (Certificate Store)
- **Certificate Storage:** LocalMachine\My (Certificate Store); certul wildcard în store-ul `WebHosting`
- **Renewal-uri:**
- `roa.romfast.ro`, `dokploy`, `gitea`, `roa2web`, `roa-qr` → validare **HTTP-01** (sursă IIS, auto)
- `roa-wildcard-cpanel` (`*.roa.romfast.ro`) → validare **DNS-01** prin hook cPanel
(`cpanel-acme-dns.ps1`), instalat pe site `roa-apps` (ID 6). Vezi incidentul de
expirare 2026-05-31 și setup-ul complet în `vm201-certificat-letsencrypt-iis.md`.
#### 4. WinNUT Client
- **Versiune:** WinNUT-Client-2.x
@@ -185,6 +190,16 @@ format manifest, workflow publicare, riscuri backup).
- **Network Level Authentication:** Enabled
- **Acces:** `mstsc /v:roacentral` (din rețea locală)
#### 6. OpenSSH Server
- **Serviciu:** `sshd` (OpenSSH_for_Windows_9.5), port 22, DefaultShell = PowerShell
- **Acces admin din claude-agent (LXC 171):** `ssh romfast@10.0.20.122 '<powershell>'`
(sesiune elevată — High Mandatory Level)
- **Chei admin:** `C:\ProgramData\ssh\administrators_authorized_keys`
(ACL strict: doar `SYSTEM:F` + `BUILTIN\Administrators:F`, owner `BUILTIN\Administrators`,
fără moștenire — altfel sshd respinge/resetează)
- **Notă:** `Administrator` peste SSH dă „Connection reset" (cont dezactivat) → folosește `romfast`.
Guest agent QEMU are `guest-exec` dezactivat, deci SSH e singura cale de execuție remote.
---
## 🌐 Configurare Rețea
@@ -339,6 +354,12 @@ cd C:\Tools\win-acme
iisreset
```
> **Wildcard `*.roa.romfast.ro`:** NU se validează prin HTTP-01 (ca celelalte), ci prin
> **DNS-01** cu hook-ul cPanel `cpanel-acme-dns.ps1`. Dacă expiră, verifică renewal-ul
> `roa-wildcard-cpanel` (`.\wacs.exe --list`) și config-ul `cpanel-dns.config.json`.
> Sentinel în monitorizare: `efactura.roa.romfast.ro`. Detalii: secțiunea „Wildcard …
> Reînnoire Automată DNS-01 (cPanel)" din `vm201-certificat-letsencrypt-iis.md`.
**Documentație completă:** `vm201-certificat-letsencrypt-iis.md`
---
@@ -408,6 +429,7 @@ ssh root@10.0.20.201 "qm delsnapshot 201 pre-update-snapshot"
- **Verificare certificate (Windows):** `scripts/check-ssl-certificates.ps1`
- **Monitorizare certificate (Proxmox):** `scripts/monitor-ssl-certificates.sh`
- **Setup site-uri IIS noi (Dokploy):** `scripts/setup-new-iis-sites.ps1`
- **Hook DNS-01 wildcard cPanel (win-ACME):** `scripts/cpanel-acme-dns.ps1` (+ template `cpanel-dns.config.example.json`; config-ul real cu token NU e în git)
### Configurații IIS
- **web.config roa-qr.romfast.ro:** `iis-configs/roa-qr.web.config`
@@ -514,6 +536,6 @@ qm migrate 201 pvemini --online
---
**Ultima actualizare:** 2026-03-02
**Ultima actualizare:** 2026-06-25
**Autor:** Marius Mutu
**Proiect:** ROMFASTSQL - VM 201 Documentation