feat(iis-migration): win-acme HTTP-01 auto-renewal on RUVDS IIS
Stood up a permanent self-renewing Let's Encrypt pipeline on the RUVDS IIS host, replacing the manual traefik acme.json -> PFX import and closing the 2026-07-22 cert-expiry deadline (new 25-SAN cert valid to 2026-09-03, SYSTEM scheduled task renews 55 days before expiry). Key obstacle: the MoreThenCms OWIN catch-all (owin:HandleAllRequests) swallowed /.well-known/acme-challenge/. Solved by carving the challenge path into a separate IIS application in a No-Managed-Code app pool, plus patching win-acme's Web_Config.xml template to remove the inherited Owin handler. Staging + prod validation green for all 25 hostnames; live TLS smoke confirms the new cert is served (incl degraded maljarka/rimiz). - scripts/iis-migration-to-ruvds/03-ruvds-winacme.ps1 (idempotent setup) - scripts/iis-migration-to-ruvds/winacme-Web_Config.xml (patched template) - .wiki/concepts/winacme-iis-owin-catchall-http01.md (recipe + gotchas) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,45 +1,51 @@
|
||||
---
|
||||
_last_updated_: 2026-06-05T00:30:00+03:00
|
||||
session_id: 2026-06-05-iis-migration-full-cutover
|
||||
_last_updated_: 2026-06-05T02:00:00+03:00
|
||||
session_id: 2026-06-05-iis-cutover-and-winacme-renewal
|
||||
---
|
||||
|
||||
# Next session handoff
|
||||
|
||||
_Сессия: **FULL CUTOVER достигнут** — все 25 hostname (tandemmebel + вся зона snolla.com) authoritative
|
||||
на RUVDS `80.64.31.36`. Source НЕ заглушен (user-decision: 7-day soak warm rollback). Зафиксировано в
|
||||
`.tasks/iis-migration-to-ruvds.md`. Ничего не висит._
|
||||
_Сессия: (1) full DNS cutover на RUVDS достигнут; (2) поднят постоянный win-acme HTTP-01 auto-renewal
|
||||
на RUVDS IIS — дедлайн cert-expiry 2026-07-22 СНЯТ. Source НЕ заглушен (warm rollback). Всё проверено,
|
||||
ничего не висит._
|
||||
|
||||
## Recent commits
|
||||
|
||||
- `539f1a07` task(iis-migration): tandemmebel DNS cutover 2026-06-05
|
||||
- (+ commit этой сессии с full-cutover записью)
|
||||
- `9cd6d4e2` task(iis-migration): full DNS cutover reached 2026-06-05
|
||||
- (+ commit этой сессии: win-acme renewal pipeline + wiki concept)
|
||||
|
||||
## Что сделано (iis-migration, 05.06)
|
||||
|
||||
- ✅ **Full cutover:** все 25 hostname → RUVDS на authoritative ns1.reg.ru. На windows-source
|
||||
(`94.19.247.14`) authoritative не осталось ничего. Вся зона `snolla.com` (apex + 10 субдоменов,
|
||||
независимые A) переехала вслед за tandemmebel.
|
||||
- ✅ Хвост кэша: `on.snolla.com` + `tandemmebel.snolla.com` ещё `94.19.247.14` на Google 8.8.8.8
|
||||
(TTL 86400, дотекает; 1.1.1.1/Yandex уже RUVDS). Дренаж до ~24ч.
|
||||
- ✅ RUVDS smoke: `snolla.com` 200, `tandemmebel.snolla.com` 200. `maljarka` 502 (pre-existing CMS, не cutover).
|
||||
- ✅ **Full cutover:** все 25 hostname authoritative на RUVDS `80.64.31.36`. На windows-source ничего authoritative.
|
||||
- ✅ **win-acme auto-renewal** на RUVDS: 25-SAN LE cert (до **2026-09-03**) во всех SNI-биндингах +
|
||||
SYSTEM scheduled task `win-acme-renew-snolla` (renew 55д до expiry). RUVDS больше НЕ зависит от
|
||||
домашнего traefik по сертификатам.
|
||||
- Gotcha решён: OWIN-catch-all CMS жрал `/.well-known/acme-challenge/` → challenge вынесен в отдельное
|
||||
IIS-приложение (пул «No Managed Code») + патч шаблона `C:\win-acme\Web_Config.xml`.
|
||||
- Артефакты: `scripts/iis-migration-to-ruvds/03-ruvds-winacme.ps1` + `winacme-Web_Config.xml`;
|
||||
recipe в `.wiki/concepts/winacme-iis-owin-catchall-http01.md`.
|
||||
- Доступ к RUVDS: SSH `~/.ssh/ruvds-iis-migration` → `Administrator@80.64.31.36` (elevated сессия).
|
||||
|
||||
## Спроси user'а
|
||||
|
||||
- **Decommission `snolla` site** — ждём soak (~2026-06-12) + drain кэша, или форсировать раньше?
|
||||
Когда решит: elevated PS → `Stop-Website snolla` → архив `C:\sites\snolla` (8.66 ГБ) → kreknin →
|
||||
cleanup temp SSH-ключей + FW-правил (`ssh-from-source`/`smb-from-source` на RUVDS).
|
||||
- **LE-renewal на RUVDS** — теперь DNS полностью на RUVDS → можно win-acme + HTTP-01. Дедлайн ~2026-07-15
|
||||
(certs expire 2026-07-22). Поднимать?
|
||||
- `maljarka.tandemmebel.ru` 502 — чинить CMS-тенант отдельно? (pre-existing, не блокер).
|
||||
- **Decommission `snolla` site** на windows-source — ждём soak (~2026-06-12) + drain кэша, или раньше?
|
||||
Когда решит: elevated PS → `Stop-Website snolla` → архив `C:\sites\snolla` (8.66 ГБ) → kreknin +
|
||||
cleanup temp SSH-ключей/FW-правил. (win-acme на RUVDS от этого не зависит — он самостоятелен.)
|
||||
- `maljarka.tandemmebel.ru` 502 — чинить CMS-тенант отдельно? (pre-existing, не блокер; HTTPS-cert у него валиден).
|
||||
|
||||
## Не делать (preemptive guards)
|
||||
|
||||
- **Не `Stop-Website snolla` пока хвост кэша течёт** — `on.`/`tandemmebel.snolla.com` ещё резолвятся
|
||||
на windows у части юзеров (Google). Остановка сейчас = частичный downtime до drain.
|
||||
- **Не глушить до soak** без явного запроса — user выбрал 7-day warm rollback.
|
||||
- IIS-правки требуют **elevated shell** (текущий `vitya` — не admin; W3SVC running).
|
||||
- **branch ahead от origin** — push без явного grant'а (Rule 4). Этой сессии grant НЕ давали.
|
||||
- **Не `--test` в win-acme под SSH** — включает интерактив, виснет. Для staging — `--baseuri <staging>`.
|
||||
- **Не трогать `acme-challenge` IIS-приложение / пул «No Managed Code» / патченый `Web_Config.xml`** —
|
||||
на них держится авто-renewal. Detail: `.wiki/concepts/winacme-iis-owin-catchall-http01.md`.
|
||||
- **Не `Stop-Website snolla` пока хвост кэша течёт / без явного запроса** (warm rollback).
|
||||
- IIS-правки — elevated shell. **branch ahead от origin** — push без явного grant'а (Rule 4); grant НЕ давали.
|
||||
|
||||
## Memory updates за сессию
|
||||
|
||||
- (нет нового файла)
|
||||
- (нет нового файла; знание — в wiki concept + task decisions log)
|
||||
|
||||
## ⚠️ Sensitive (НЕ в git)
|
||||
|
||||
- Корневой `C:\sites\snolla\web.config` содержит plaintext-креды (MSSQL/SMTP/Azure/API-ключи). Pre-existing,
|
||||
не вводилось этой сессией. Если будешь декоммишить/архивировать — не плодить копии в трекаемых местах.
|
||||
|
||||
Reference in New Issue
Block a user