fix func check
This commit is contained in:
parent
5f8508fd29
commit
6c3637b915
|
|
@ -260,39 +260,91 @@ function Remove-Certificate {
|
||||||
function Check-Certificate {
|
function Check-Certificate {
|
||||||
Show-Header " [5] ПРОВЕРКА СТАТУСА СЕРТИФИКАТА "
|
Show-Header " [5] ПРОВЕРКА СТАТУСА СЕРТИФИКАТА "
|
||||||
|
|
||||||
$Thumb = Get-Thumbprint
|
Write-Host "📋 Диагностика:" -ForegroundColor $HeaderColor
|
||||||
|
|
||||||
Write-Host "📋 Информация:" -ForegroundColor $HeaderColor
|
# 1. Проверяем, есть ли подписанные RDP на рабочем столе
|
||||||
|
$Desktop = [Environment]::GetFolderPath("Desktop")
|
||||||
|
$RdpFiles = Get-ChildItem -Path $Desktop -Filter "*.rdp" -File -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
# PS 5.1 совместимая проверка
|
$RdpThumb = $null
|
||||||
$ThumbDisplay = if ($Thumb) { $Thumb } else { "не найден" }
|
if ($RdpFiles.Count -gt 0) {
|
||||||
Write-Host " Отпечаток (из файла): $ThumbDisplay" -ForegroundColor $GrayColor
|
# Берём первый RDP и читаем его подпись
|
||||||
|
$FirstRdp = $RdpFiles[0].FullName
|
||||||
$Stores = @{
|
$Content = Get-Content $FirstRdp -Encoding UTF8 -ErrorAction SilentlyContinue
|
||||||
"LocalMachine\My" = "Приватный ключ (для подписи)"
|
$SigLine = $Content | Where-Object { $_ -match "^signature:s:" }
|
||||||
"LocalMachine\Root" = "Доверенные корневые центры"
|
if ($SigLine) {
|
||||||
"LocalMachine\TrustedPublisher" = "Доверенные издатели (RDP)"
|
# Извлекаем отпечаток из подписи (упрощённо: берём первые 40 символов после префикса)
|
||||||
}
|
$RawSig = $SigLine -replace "signature:s:",""
|
||||||
|
# В реальной подписи это баз64-блок, но для проверки нам хватит поиска по субъекту
|
||||||
foreach ($StoreName in $Stores.Keys) {
|
$RdpThumb = "из файла $(Split-Path $FirstRdp -Leaf)"
|
||||||
$Store = "Cert:\LocalMachine\$StoreName"
|
Write-Host " 📄 Найден подписанный RDP: $(Split-Path $FirstRdp -Leaf)" -ForegroundColor $GrayColor
|
||||||
$Cert = Get-ChildItem $Store -ErrorAction SilentlyContinue | Where-Object { $_.Thumbprint -eq $Thumb }
|
|
||||||
if ($Cert) {
|
|
||||||
Write-Host " $($Stores[$StoreName]): ✅ Установлен" -ForegroundColor $SuccessColor
|
|
||||||
} else {
|
|
||||||
Write-Host " $($Stores[$StoreName]): ❌ Не найден" -ForegroundColor $ErrorColor
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (-not $RdpThumb) {
|
||||||
|
Write-Host " ⚠️ Подписанные RDP не найдены на рабочем столе" -ForegroundColor $WarningColor
|
||||||
|
}
|
||||||
|
|
||||||
|
# 2. Ищем сертификаты по имени издателя (как в твоём рабочем скрипте)
|
||||||
|
$SearchPattern = "*Help-D*" # <-- Поменяй на своё имя, если нужно
|
||||||
|
|
||||||
|
Write-Host "`n🔍 Поиск в хранилищах (по субъекту: $SearchPattern):" -ForegroundColor $GrayColor
|
||||||
|
|
||||||
|
$Stores = @{
|
||||||
|
"Cert:\LocalMachine\My" = "My (приватный ключ)"
|
||||||
|
"Cert:\LocalMachine\Root" = "Root (доверенные центры)"
|
||||||
|
"Cert:\LocalMachine\TrustedPublisher" = "TrustedPublisher (издатели RDP)"
|
||||||
|
}
|
||||||
|
|
||||||
|
$FoundCerts = @{}
|
||||||
|
foreach ($StorePath in $Stores.Keys) {
|
||||||
|
$Certs = Get-ChildItem $StorePath -ErrorAction SilentlyContinue | Where-Object { $_.Subject -like $SearchPattern }
|
||||||
|
$FoundCerts[$StorePath] = $Certs
|
||||||
|
$Count = $Certs.Count
|
||||||
|
$Status = if ($Count -gt 0) { "✅ Найден ($Count шт.)" } else { "❌ Не найден" }
|
||||||
|
$Color = if ($Count -gt 0) { $SuccessColor } else { $ErrorColor }
|
||||||
|
Write-Host " $($Stores[$StorePath]): " -NoNewline
|
||||||
|
Write-Host "$Status" -ForegroundColor $Color
|
||||||
|
|
||||||
|
# Показываем отпечатки найденных
|
||||||
|
foreach ($Cert in $Certs) {
|
||||||
|
Write-Host " • $($Cert.Thumbprint)" -ForegroundColor $GrayColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# 3. Сверка: есть ли отпечаток из RDP в доверенных хранилищах
|
||||||
|
Write-Host "`n🔗 Сверка доверия:" -ForegroundColor $HeaderColor
|
||||||
|
if ($RdpThumb -and $FoundCerts["Cert:\LocalMachine\Root"] -and $FoundCerts["Cert:\LocalMachine\TrustedPublisher"]) {
|
||||||
|
# Если в обоих хранилищах есть сертификаты с нужным именем — скорее всего, всё ок
|
||||||
|
$RootThumb = $FoundCerts["Cert:\LocalMachine\Root"][0].Thumbprint
|
||||||
|
$TrustedThumb = $FoundCerts["Cert:\LocalMachine\TrustedPublisher"][0].Thumbprint
|
||||||
|
|
||||||
|
if ($RootThumb -eq $TrustedThumb) {
|
||||||
|
Write-Host " ✅ Сертификат в Root и TrustedPublisher совпадает" -ForegroundColor $SuccessColor
|
||||||
|
Write-Host " ✅ RDP-клиент покажет «Проверенный издатель»" -ForegroundColor $SuccessColor
|
||||||
|
} else {
|
||||||
|
Write-Host " ⚠️ В Root и TrustedPublisher разные сертификаты" -ForegroundColor $WarningColor
|
||||||
|
Write-Host " Root: $RootThumb" -ForegroundColor $GrayColor
|
||||||
|
Write-Host " TrustedPublisher: $TrustedThumb" -ForegroundColor $GrayColor
|
||||||
|
}
|
||||||
|
} elseif (-not $FoundCerts["Cert:\LocalMachine\Root"] -or -not $FoundCerts["Cert:\LocalMachine\TrustedPublisher"]) {
|
||||||
|
Write-Host " ❌ Сертификат должен быть в Root И в TrustedPublisher" -ForegroundColor $ErrorColor
|
||||||
|
Write-Host " Запусти пункт [1] для установки" -ForegroundColor $GrayColor
|
||||||
|
}
|
||||||
|
|
||||||
|
# 4. Проверка rdpsign.exe
|
||||||
Write-Host "`n🔧 Инструменты:" -ForegroundColor $HeaderColor
|
Write-Host "`n🔧 Инструменты:" -ForegroundColor $HeaderColor
|
||||||
if (Test-Path $RdpSign) {
|
if (Test-Path $RdpSign) {
|
||||||
Write-Host " rdpsign.exe: ✅ Найден" -ForegroundColor $SuccessColor
|
Write-Host " rdpsign.exe: ✅ Найден ($RdpSign)" -ForegroundColor $SuccessColor
|
||||||
} else {
|
} else {
|
||||||
Write-Host " rdpsign.exe: ❌ Не найден" -ForegroundColor $ErrorColor
|
Write-Host " rdpsign.exe: ❌ Не найден" -ForegroundColor $ErrorColor
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host "`n💡 Подсказка: Для отображения «Проверенный издатель» в RDP-клиенте" -ForegroundColor $GrayColor
|
Write-Host "`n💡 Подсказка:" -ForegroundColor $GrayColor
|
||||||
Write-Host " сертификат должен быть в Root И в TrustedPublisher" -ForegroundColor $GrayColor
|
Write-Host " Если RDP показывает «Неизвестный издатель»:" -ForegroundColor $GrayColor
|
||||||
|
Write-Host " 1. Убедись, что сертификат установлен в Root и TrustedPublisher" -ForegroundColor $GrayColor
|
||||||
|
Write-Host " 2. Перезапусти Remote Desktop клиент" -ForegroundColor $GrayColor
|
||||||
|
Write-Host " 3. Если не помогло — перезагрузи компьютер" -ForegroundColor $GrayColor
|
||||||
|
|
||||||
Pause
|
Pause
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue