Files
fix-DAK-PC/README.md
T
PTah 5761710fa1 fix: Thumbprint при одном cert после нативного сброса (PS 5.1 unwrap)
Добавлены Get-RdpRepairCertificateArray/FirstCertificate, самотесты на вложенные
массивы; Fix-RdpTls больше не использует Select-Object -First 1 на cert.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 20:31:03 +10:00

95 lines
4.5 KiB
Markdown
Raw 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.
# 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).