docs: проверенный сценарий DAK-PC (фазы 3-5 + RestoreTls)

Добавлен DAK-PC-RESOLVED.md, README и runbook отражают фактическое решение
без repair install; перечислены внешние задачи планировщика для отключения.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
PTah
2026-06-22 16:19:58 +10:00
parent f35e2e2d96
commit d1e594f057
3 changed files with 111 additions and 3 deletions
+92
View File
@@ -0,0 +1,92 @@
# DAK-PC — проверенное решение (2026-06-12)
Фактический исход: **RDP с TLS восстановлен без repair install Windows**.
## Симптомы
- Клиент RDP: «внутренняя ошибка»
- Журнал System: **1057**, Schannel **36870**
- `TermService` сбрасывал `SSLCertificateSHA1Hash`
- Временно работал обход `SecurityLayer=0`
## Что **не** из этого репозитория (можно отключить на ПК)
Создано вручную / другими скриптами во время отладки — **не запускать** после успешного ремонта:
| Артефакт | Назначение (предположительно) |
|----------|-------------------------------|
| Задачи `RdpBindFix`, `RdpNativeReset`, `FixRdpCertSystemOnce`, `RdpLegacyCert` | Автопочинка cert/bind |
| `CryptoRepair.ps1` | ACL / crypto / cert (дублирует часть `Fix-RdpTls`) |
| `RDP-Login-Monitor` (+ Watchdog) | Мониторинг входов (по желанию) |
## Последовательность, которая **решила** проблему
### 1. Самотесты (после исправления багов в скриптах)
```powershell
cd C:\Soft\fix-DAK-PC\scripts
.\Invoke-RdpRepairSelfTest.ps1 -IncludeAdminTests
```
Ожидание: `FAIL=0`.
### 2. Полный ремонт — фазы 3–5
```powershell
.\Fix-RdpTls.ps1
```
На DAK-PC:
- **Фаза 2** (нативный сброс): cert появился, но **привязка не прижилась** → reboot не помог при повторе.
- Ответ **n** на reboot → **фаза 35**:
- создан cert `144D8D18C5452DBB8D3DE9FE6C61E69E2497E1A9`
- ACL на `MachineKeys`
- cert в store `Remote Desktop`
- запись `SSLCertificateSHA1Hash` (reg + WMI)
- Hash BEFORE = Hash AFTER (TermService **принял** cert)
Скрипт тогда ошибочно показал ERROR из‑за сравнения байтов реестра с hex thumbprint (исправлено в RdpRepair **1.0.3**).
### 3. Возврат TLS
```powershell
git pull # версия RdpRepair 1.0.3+
.\Fix-RdpTls.ps1 -RestoreTls
```
Результат в логе:
- `Привязка cert принята TermService`
- `SecurityLayer=2, TermService перезапущен`
### 4. На клиенте RDP (не на DAK-PC)
```powershell
Remove-Item "HKCU:\Software\Microsoft\Terminal Server Client\Servers\DAK-PC" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "HKCU:\Software\Microsoft\Terminal Server Client\Servers\DAK-PC.b26.kalinamall.ru" -Recurse -Force -ErrorAction SilentlyContinue
```
## Что **не** понадобилось на DAK-PC
- Repair install Windows (`docs/REPAIR-INSTALL.md`) — запасной план при пустом Hash AFTER
- Повторные reboot в цикле
- Задачи планировщика `RdpBind*` / `CryptoRepair.ps1`
## Критерии «готово» (выполнено)
- [x] Cert в `Remote Desktop`, `NotAfter` в будущем
- [x] `SSLCertificateSHA1Hash` = thumbprint после перезапуска TermService
- [x] `SecurityLayer` = **2**
- [x] RDP с клиента работает
## Минимальный набор файлов репозитория для повтора
| Файл | Зачем |
|------|--------|
| `scripts/Fix-RdpTls.ps1` | Единая точка входа |
| `scripts/lib/RdpRepair.Common.ps1` | Логика cert/ACL/bind |
| `scripts/Invoke-RdpRepairSelfTest.ps1` | Проверка перед ремонтом |
| `docs/DAK-PC-RESOLVED.md` | Этот сценарий |
| `docs/TROUBLESHOOTING.md` | События 1057/36870 |
| `docs/REPAIR-INSTALL.md` | Только если Hash AFTER реально пустой |
+2
View File
@@ -1,5 +1,7 @@
# Пошаговый runbook — за компом DAK-PC (локально)
> **Фактический успех на DAK-PC (2026-06-12):** [DAK-PC-RESOLVED.md](DAK-PC-RESOLVED.md) — фазы 35 + `-RestoreTls`, без repair install.
Выполняйте **на проблемном ПК** в PowerShell **от имени администратора**.
## 0. Подготовка