É possível assinar em lote CSRs (com certutil por exemplo)?

1

Tenho cerca de 100 CSR para assinar em um PKI do Windows. Gostaria de saber se é possível enviar em lote, emitir e exportar esses CSRs por script batch ou powershell, talvez usando o utilitário cert e como fazê-lo.

Minhas pesquisas não apresentaram nada, mas ainda acho que isso deve ser possível. Qualquer ajuda seria muito apreciada.

Obrigado.

    
por SSler 20.06.2013 / 16:04

2 respostas

1

Eu uso ferramentas de linha de comando em uma autoridade de certificação autônoma do Windows 2003, mas tenho certeza de que elas funcionam da mesma maneira em versões mais recentes também.

Para enviar uma solicitação

certreq.exe -config .\MyCA -submit myhost1.req

Isso retorna algo assim:

RequestId: 555
Certificate request is pending: Taken Under Submission (0)

Você pode enviar a solicitação:

certutil.exe -resubmit 555

e exporte-o para um arquivo:

certreq.exe -config .\MyCA -Retrieve 555 myhost1.cer

Portanto, com esse conhecimento e 100 arquivos de solicitação em um diretório, você pode usar o PowerShell:

  • Percorra todos os arquivos e execute os três comandos para cada arquivo
  • Você precisa analisar a saída do comando certreq submit para obter o ID da solicitação que você precisa nas duas etapas posteriores.

-config .\myCA é para especificar a CA a usar, neste caso, um com o nome 'myCA' na máquina local.

Se você já tiver as solicitações no sistema, precisará percorrer todas as pendências e executar as duas últimas etapas em relação a cada uma.

    
por 22.10.2013 / 12:27
1

Eu encontrei esta pergunta enquanto tentava fazer algo semelhante; Eu tinha um monte de CSRs no formato Base64 gerados por dispositivos HP iLO e queria assiná-los usando nossa CA Enterprise Services AD Certificate Services.

Eu finalmente consegui fazer isso com este comando:

certreq -config "caserver01.mydomain.com\Name of My CA" -attrib "CertificateTemplate:CNOfMyCertificateTemplate" -submit c:\myCSR.csr c:\pathToSaveCertificate.cer

NB //

  • Você precisa especificar o CN do modelo de certificado e não o nome de exibição. Eu encontrei o CN, olhando aqui com ADSIedit:

    CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=mydomain,DC=com
    
  • O nome de todas as CAs corporativas em um domínio pode ser encontrado executando

    certutil -dump
    
  • Minha conta de usuário não requer aprovação para usar esse modelo de certificado, portanto, eles são emitidos automaticamente e baixados imediatamente pelo certreq. Não sei como isso foi configurado na CA, ou mesmo se é uma ideia particularmente boa. Se a solicitação precisar ser aprovada, acredito que você precise executar um comando "certreq -retrieve" separado para fazer o download do certificado assim que for aprovado.

Espero que isso ajude alguém!

    
por 09.12.2013 / 19:16