Alguém sabe como encontrar todos os certificados que não foram inscritos automaticamente?

1

Estou no processo de mover uma função dos Serviços de Certificados do Active Directory para um novo servidor de 2012. O novo servidor emitirá novos certificados e eu preciso encontrar todos os certificados que não foram distribuídos por inscrição automática para que eu possa criar novos manualmente.

Alguém sabe de uma boa maneira de fazer isso com o Powershell, de preferência? Estou usando o módulo PSPKI.

    
por Adam Bertram 27.11.2013 / 16:07

1 resposta

1

Você poderia abrir o repositório de certificados :

$CertStore = New-Object System.Security.Cryptography.X509Certificates.X509Store("\computername\MY","LocalMachine")
$CertStore.Open("ReadOnly")
$CertStore.Certificate # this property contains all the certificates.

Você pode abrir o armazenamento pessoal da máquina local em cada computador que deseja auditar, enumerar e retornar informações sobre os certificados não emitidos pela nova CA

$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
                }
        }
    }
}

Agora você pode ver quais computadores / servidores ainda têm certificados das antigas CAs instaladas:

$oldCerts |Group-Object -Property Computer
    
por 03.12.2013 / 00:33