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:
@@ -2,7 +2,18 @@
|
|||||||
|
|
||||||
Набор скриптов для **локального** (с консоли проблемного ПК) восстановления RDP, когда клиент показывает «внутренняя ошибка», в журнале **1057** / **Schannel 36870**, TermService сбрасывает `SSLCertificateSHA1Hash`.
|
Набор скриптов для **локального** (с консоли проблемного ПК) восстановления RDP, когда клиент показывает «внутренняя ошибка», в журнале **1057** / **Schannel 36870**, TermService сбрасывает `SSLCertificateSHA1Hash`.
|
||||||
|
|
||||||
Сценарий проверен на **DAK-PC** (Win10 Pro 19045): корень — сломанная привязка TLS-сертификата RDP; обход `SecurityLayer=0`; полное лечение — repair install + возврат TLS.
|
Сценарий проверен на **DAK-PC** (Win10 Pro 19045): корень — сломанная привязка TLS-сертификата RDP; обход `SecurityLayer=0`; **лечение — `Fix-RdpTls.ps1` фазы 3–5 + `-RestoreTls`** (repair install не понадобился). Подробно: [docs/DAK-PC-RESOLVED.md](docs/DAK-PC-RESOLVED.md).
|
||||||
|
|
||||||
|
## Проверенная последовательность (DAK-PC)
|
||||||
|
|
||||||
|
1. `.\Invoke-RdpRepairSelfTest.ps1 -IncludeAdminTests` → `FAIL=0`
|
||||||
|
2. `.\Fix-RdpTls.ps1` → при неудачном нативном сбросе: **фазы 3–5** (создать cert, ACL, привязка)
|
||||||
|
3. `.\Fix-RdpTls.ps1 -RestoreTls` → `SecurityLayer=2`
|
||||||
|
4. Сброс кэша RDP на **клиенте**
|
||||||
|
|
||||||
|
Ранее для доступа: `.\Fix-RdpTls.ps1 -EmergencyRdpOnly` (`SecurityLayer=0`).
|
||||||
|
|
||||||
|
**Не из репозитория:** задачи планировщика `RdpBindFix`, `RdpNativeReset`, `CryptoRepair.ps1` — отключить после успеха.
|
||||||
|
|
||||||
## Быстрый старт (за компом DAK-PC)
|
## Быстрый старт (за компом DAK-PC)
|
||||||
|
|
||||||
@@ -41,12 +52,14 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Invoke-RdpRepairSelfTe
|
|||||||
.\Fix-RdpTls.ps1 -EmergencyRdpOnly
|
.\Fix-RdpTls.ps1 -EmergencyRdpOnly
|
||||||
```
|
```
|
||||||
|
|
||||||
7. После **repair install** Windows и успешной привязки cert — **возврат TLS**:
|
7. **Возврат TLS** (после успешной привязки cert — фазы 3–5 или нативный cert):
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
.\Fix-RdpTls.ps1 -RestoreTls
|
.\Fix-RdpTls.ps1 -RestoreTls
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Если Hash AFTER остаётся пустым при любом cert — см. [docs/REPAIR-INSTALL.md](docs/REPAIR-INSTALL.md).
|
||||||
|
|
||||||
## Структура
|
## Структура
|
||||||
|
|
||||||
| Файл | Назначение |
|
| Файл | Назначение |
|
||||||
@@ -54,7 +67,8 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Invoke-RdpRepairSelfTe
|
|||||||
| `scripts/Fix-RdpTls.ps1` | Главный сценарий: диагностика → очистка → cert → привязка → проверка |
|
| `scripts/Fix-RdpTls.ps1` | Главный сценарий: диагностика → очистка → cert → привязка → проверка |
|
||||||
| `scripts/Invoke-RdpRepairSelfTest.ps1` | Самотесты функций и синтаксиса |
|
| `scripts/Invoke-RdpRepairSelfTest.ps1` | Самотесты функций и синтаксиса |
|
||||||
| `scripts/lib/RdpRepair.Common.ps1` | Общие функции |
|
| `scripts/lib/RdpRepair.Common.ps1` | Общие функции |
|
||||||
| `docs/REPAIR-INSTALL.md` | Repair install Windows (на месте) |
|
| `docs/DAK-PC-RESOLVED.md` | **Фактический** сценарий успеха на DAK-PC |
|
||||||
|
| `docs/REPAIR-INSTALL.md` | Запасной план: repair install (если Hash AFTER пустой) |
|
||||||
| `docs/RETURN-TO-TLS.md` | Возврат SecurityLayer=2 после починки cert |
|
| `docs/RETURN-TO-TLS.md` | Возврат SecurityLayer=2 после починки cert |
|
||||||
| `docs/TROUBLESHOOTING.md` | События, типичные ошибки, GPO |
|
| `docs/TROUBLESHOOTING.md` | События, типичные ошибки, GPO |
|
||||||
| `docs/LOCAL-RUNBOOK.md` | Пошаговый сценарий за консолью DAK-PC |
|
| `docs/LOCAL-RUNBOOK.md` | Пошаговый сценарий за консолью DAK-PC |
|
||||||
|
|||||||
@@ -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 → **фаза 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 реально пустой |
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
# Пошаговый runbook — за компом DAK-PC (локально)
|
# Пошаговый runbook — за компом DAK-PC (локально)
|
||||||
|
|
||||||
|
> **Фактический успех на DAK-PC (2026-06-12):** [DAK-PC-RESOLVED.md](DAK-PC-RESOLVED.md) — фазы 3–5 + `-RestoreTls`, без repair install.
|
||||||
|
|
||||||
Выполняйте **на проблемном ПК** в PowerShell **от имени администратора**.
|
Выполняйте **на проблемном ПК** в PowerShell **от имени администратора**.
|
||||||
|
|
||||||
## 0. Подготовка
|
## 0. Подготовка
|
||||||
|
|||||||
Reference in New Issue
Block a user