O MMC “Enterprise PKI” permite qualquer teste automatizado da PKI?

5

Estou usando o Enterprise PKI para diagnosticar e verificar a integridade de um sistema MSK PKI.

Existe alguma maneira de criar scripts / automatizar esta ferramenta para me alertar sobre a expiração pendente de uma CRL ou AIA ausente?

    
por random65537 04.12.2014 / 14:38

2 respostas

4

Não, o PKIView.msc não fornece nenhum meio / capacidade de automação. Você tem que escrever seus próprios scripts. O que eu gostaria de sugerir (desculpe, nenhum código real, mas uma maneira de fazer isso) é considerar o seguinte plano e possíveis ferramentas (supondo, você usará o Windows PowerShell):

  • enumerar todas as Autoridades de certificação da empresa (usando ICertConfig interface)
  • faça um loop sobre cada CA e recupere o certificado mais recente do CA Exchange ( ICertAdmin :: GetCAProperty com CR_PROP_CAXCHGCERT no parâmetro PropId )
  • use X509Chanin.Build () método para construir a cadeia para cada certificado do CA Exchange. Isso lhe dará todos os certificados para examinar.
  • faça um loop sobre cada certificado e use CryptGetObjectUrl função para extrair URLs das extensões CDP e AIA.
  • use o cmdlet Invoke-WebRequest para tentar baixar objetos do URL reunido na etapa anterior.
  • denuncie os downloads com falha. Se o download for bem-sucedido, você pode definir limites para avisar sobre itens prestes a expirar ou já expirados.

Existem muitas maneiras, mas eu gostaria de ir com essa (estou planejando trabalhar nisso no próximo ano, então é possível).

e a última sugestão: se você está procurando uma solução confiável, não confie na análise de saída certutil, porque sua saída depende de vários fatores e pode não ser a esperada.

Além disso, essa tarefa será simplificada se você usar o módulo PKI do PowerShell . Este módulo já oferece maneiras de enumerar CAs corporativas, ler CRLs de maneira gerenciada, recuperar certificados do CA Exchange e assim por diante.

update 26.12.2014 : um PoC do script agora está disponível: PKI Enterprise (pkiview.msc) do PowerShell Edition (PoC)

    
por 04.12.2014 / 15:32
-1

O MMC mostrará ícones vermelhos / amarelos quando certas coisas não estiverem corretas, mas é um console interativo e não possui recursos de automação. Eu uso o powershell para invocar o comando CERTUTIL CLI para verificar as expirações, e invocar-webrequest para testar a disponibilidade do AIA.

gci \servername\certenroll\*.crl | foreach {
    certutil -dump $_.fullname | out-string | % { $_ -match "Next CRL Publish\r\n\s+(.*)" | out-null }
    $expire = [datetime]$matches[1]
    $expire
    # do some date math on $expire
    # send some email if about to expire
}

$aia = "http://pki.acme.com/acme.crt"
if ( (invoke-webrequest $aia).statuscode -ne 200) {
    # not found, send-mailmessage
}
    
por 04.12.2014 / 15:20