Назад | Перейти на главную страницу

Powershell удаленно удалить сертификаты PKI

Я недавно перестроил свой PKI и хотел бы удалить сертификаты, выданные всем клиентским машинам в моей сети. Похоже, это работа для Powershell! Итак, я написал этот сценарий, который будет распространяться с помощью GPO, запускаться из SysVol и запускаться на клиентских машинах при запуске:

set-location cert:\LocalMachine\My
$certname = $env:COMPUTERNAME + ".domain.com"
get-item * | %{
if($_.issuer -like "CN=IssuingCA*" -and $_.DnsNameList.unicode -like $certname) { remove-item .\$_.Thumbprint -Force }
}

Из командной строки с повышенными привилегиями:

Это проблема с разрешениями? Есть ли более умный / простой способ сделать это?

Спасибо!

Мой ответ - «Есть ли более умный / простой способ сделать это?» часть вашего вопроса. Этот сценарий успешно удалил для меня сертификат go daddy

$Path = 'Cert:\LocalMachine\AuthRoot\'
$CertList = @()

$CertList = Get-ChildItem -Path $Path | Where-Object {$_.Issuer -like "CN=GO*"}

foreach($Cert in $CertList){
    remove-item "$($Path)$($Cert.Thumbprint)" -Force -WhatIf
}

Я добавил -WhatIf чтобы этот код не был опасен для фолкса "копировать \ вставить \ запустить". Теперь вам нужно адаптировать $Path, Where-Objectи добавьте $certname переменная, но шаблон выше должен вас заинтересовать.

Хотя мне не удалось решить проблему со скриптом, Я смог найти способ «умнее / проще» достичь своей цели.

От центра сертификации:

  • Rt-Click Certificate Templates и выберите Manage
  • Rt-щелкните шаблон сертификата, который хотите заменить, и выберите Reenroll All Certificate Holders

Это увеличит номер версии шаблона, и сетевые системы с автоматической регистрацией удалят старый сертификат и зарегистрируются с новым сертификатом.

Хотя для этого требуется автоматическая регистрация для конкретного шаблона, с которым я работаю, предпочтительным ответом было бы решение опубликованного сценария.