Я нахожусь в процессе переноса роли службы сертификации Active Directory на новый сервер 2012 года. Новый сервер будет выдавать новые сертификаты, и мне нужно найти все сертификаты, которые не были выданы с помощью автоматической регистрации, чтобы я мог вручную выпустить новые.
Кто-нибудь знает, как лучше сделать это с помощью Powershell? Я использую модуль PSPKI.
Ты мог открыть хранилище сертификатов:
$CertStore = New-Object System.Security.Cryptography.X509Certificates.X509Store("\\computername\MY","LocalMachine")
$CertStore.Open("ReadOnly")
$CertStore.Certificate # this property contains all the certificates.
Вы можете открыть личный магазин на локальном компьютере на каждом компьютере, который хотите проверить, перечислить и вернуть информацию о сертификатах. не выданный вашим новым ЦС
$Computers = "adbertram01","adbertram02","adbertram03"
$oldCerts = @() # This will contain all the interesting certificates
foreach($Computer in $Computers)
{
$CertStore = New-Object System.Security.Cryptography.X509Certificates.X509Store("\\$Computer\MY","LocalMachine")
$CertStore.Open("ReadOnly")
if(!$CertStore.Certificates.Count -gt 0)
{
continue # No certificates found, move along
}
foreach($Cert in $CertStore.Certificates)
{
if($Cert.Issuer -notmatch "MyNew2012CA")
{
$oldCerts += New-Object PSObject -Property @{
Computer = $Computer
Subject = $Cert.Subject
Issuer = $Cert.Issuer
Thumbprint = $c.Thumbprint
}
}
}
}
Теперь вы можете увидеть, на каких компьютерах / серверах все еще установлены сертификаты от старого центра сертификации:
$oldCerts |Group-Object -Property Computer