# 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 → **фаза 3–5**: - создан 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 реально пустой |