Files
fix-DAK-PC/docs/DAK-PC-RESOLVED.md
PTah d1e594f057 docs: проверенный сценарий DAK-PC (фазы 3-5 + RestoreTls)
Добавлен DAK-PC-RESOLVED.md, README и runbook отражают фактическое решение
без repair install; перечислены внешние задачи планировщика для отключения.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-22 16:19:58 +10:00

93 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 реально пустой |