Estou tentando criar a infraestrutura necessária para permitir que usuários autorizados assinem scripts do PowerShell e que a organização confie neles. Isso permite implantar scripts em computadores com a Política de Execução AllSigned. Este é o processo que imagino:
- Um servidor de Serviços de Autoridade de Certificação do Windows cria um RootCA (RootCA.cer).
- Dentro desse servidor há um modelo de certificado para um certificado de assinatura de código.
- O RootCA é implantado em todos os computadores por meio da Política de Grupo e colocado no Trusted Publisher Store.
- Um usuário solicita um certificado de assinatura de código usando o modelo (CodeSigningCert.cer), que é assinado e verificado pelo RootCA.
Neste ponto, o certificado de assinatura de código (CodeSigningCert.cer) é um delegado do RootCA (RootCA.cer) e, em minha suposição, deve se qualificar como um Publicador confiável porque seu pai (RootCA.cer) está no armazenamento do Editor confiável.
No entanto, se eu assinar um script do PowerShell usando este certificado:
$cert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath "Z:\PowerShellTest.ps1" -Certificate $cert
E então tento executá-lo, recebo:
Do you want to run software from this untrusted publisher?
Por outro lado, se eu adicionar manualmente o próprio CodeSigningCert.cer ao armazenamento do Trusted Publisher, o Windows executará o script do PowerShell com satisfação, pois é confiável.
Por favor, diga:
- Estou enganado ao presumir que é assim que funcionam as cadeias de assinatura AuthenticodeSignature? (Em que apenas o pai precisa ser confiável e os delegados podem assinar scripts)
- Se estou enganado , qual é a maneira ideal de assinar scripts do PowerShell como uma organização?
- Se não me engano, o que estou fazendo de errado?
Obrigado por qualquer ajuda que você possa fornecer.