# fix-DAK-PC — локальная починка RDP/TLS на Windows 10/11 Набор скриптов для **локального** (с консоли проблемного ПК) восстановления RDP, когда клиент показывает «внутренняя ошибка», в журнале **1057** / **Schannel 36870**, TermService сбрасывает `SSLCertificateSHA1Hash`. Сценарий проверен на **DAK-PC** (Win10 Pro 19045): корень — сломанная привязка TLS-сертификата RDP; обход `SecurityLayer=0`; полное лечение — repair install + возврат TLS. ## Быстрый старт (за компом DAK-PC) 1. Скопируйте репозиторий или папку `scripts` на ПК (флешка, `git clone`, общая шара). 2. **PowerShell от имени администратора**. 3. Разрешите выполнение (один раз в этой сессии): ```powershell Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force cd C:\path\to\fix-DAK-PC\scripts ``` 4. **Самотесты** (обязательно, с правами администратора): ```powershell .\Invoke-RdpRepairSelfTest.ps1 -IncludeAdminTests ``` Ожидание: `FAIL=0`. Если `Set-ExecutionPolicy` ругается на GPO — для сессии достаточно `Process=Bypass` или запуск: ```powershell powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Invoke-RdpRepairSelfTest.ps1 -IncludeAdminTests ``` Самотесты проверяют синтаксис, загрузку модулей, чтение cert store и ловушки PowerShell 5.1 с одним cert; **не** прогоняют полный `Fix-RdpTls.ps1` (очистку store, reboot, привязку). 5. **Полный интерактивный ремонт**: ```powershell .\Fix-RdpTls.ps1 ``` 6. Если TLS не удаётся починить — **экстренный доступ** (без TLS): ```powershell .\Fix-RdpTls.ps1 -EmergencyRdpOnly ``` 7. После **repair install** Windows и успешной привязки cert — **возврат TLS**: ```powershell .\Fix-RdpTls.ps1 -RestoreTls ``` ## Структура | Файл | Назначение | |------|------------| | `scripts/Fix-RdpTls.ps1` | Главный сценарий: диагностика → очистка → cert → привязка → проверка | | `scripts/Invoke-RdpRepairSelfTest.ps1` | Самотесты функций и синтаксиса | | `scripts/lib/RdpRepair.Common.ps1` | Общие функции | | `docs/REPAIR-INSTALL.md` | Repair install Windows (на месте) | | `docs/RETURN-TO-TLS.md` | Возврат SecurityLayer=2 после починки cert | | `docs/TROUBLESHOOTING.md` | События, типичные ошибки, GPO | | `docs/LOCAL-RUNBOOK.md` | Пошаговый сценарий за консолью DAK-PC | ## Фазы `Fix-RdpTls.ps1` | Фаза | Действие | |------|----------| | 0 | Самопроверка: админ, ОС, службы, модули | | 1 | Диагностика → отчёт `%ProgramData%\RdpRepair\report-*.txt` | | 2 | Очистка просроченных/битых cert в `Remote Desktop` и `My` | | 3 | Нативный сброс (выкл/вкл RDP, очистка store) + опциональный reboot | | 4 | Создание cert (цепочка провайдеров: Enhanced RSA → default) | | 5 | ACL на приватный ключ (`NETWORK SERVICE`, `SYSTEM`) | | 6 | Привязка (`reg` + WMI), проверка **Hash BEFORE/AFTER** | | 7 | `-EmergencyRdpOnly`: SecurityLayer=0 | | 8 | `-RestoreTls`: SecurityLayer=2 при успешной привязке | ## Критерий успеха TLS После перезапуска `TermService`: - `SSLCertificateSHA1Hash` в реестре **совпадает** с thumbprint cert в store. - События **1057** / **36870** не появляются при тестовом подключении RDP. - `SecurityLayer` = **2** (как на рабочих ПК в домене). Если **Hash AFTER** пустой при любом cert — см. [docs/REPAIR-INSTALL.md](docs/REPAIR-INSTALL.md). ## Клонирование ```bash git clone https://git.kalinamall.ru/PapaTramp/fix-DAK-PC.git ``` ## Лицензия Внутреннее использование (PapaTramp / kalinamall).