top of page

Como Assinar Seus Scripts PowerShell Sem Perder a Cabeça - AllSigned

Foto do escritor: Leandro CascãoLeandro Cascão

Então, você quer assinar seus scripts PowerShell? Beleza! É uma ótima maneira de garantir que ninguém mexa neles sem sua permissão. Vamos lá!




Passo 1: Pegar um Certificado de Assinatura de Código


Para assinar seus scripts, você precisa de um certificado. Dá pra criar um certificado de mentirinha só pra testar ou pegar um certificado de verdade com uma autoridade confiável. Vamos lá para as 2 opções mostrar as duas opções.


Opção 1: Criar um Certificado de Teste SelfSigned (Tipo um Selo "Eu me garanto que sou eu mesmo")

Se você tá só testando ou num ambiente interno, rola criar um certificado "feito em casa" com esse comando no PowerShell:


New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=SeuCertificadoLegal" -KeyUsage DigitalSignature -CertStoreLocation Cert:\CurrentUser\My

Explicações

  • -Type CodeSigningCert: É tipo você dizendo: "Quero um certificado de assinatura de código, beleza?".

  • -Subject: Esse é o nome do seu certificado. Sinta-se livre pra dar um nome épico ou deixar o básico mesmo.

  • -CertStoreLocation: Lugar onde o certificado vai morar. Nesse caso, ele vai ficar na "casa" do usuário atual.


Pronto, seu certificado fake tá criado e guardado no seu "baú de certificados" (Cert:\CurrentUser\My).


Opção 2: Certificado de Verdade (Ou "Eu Sou Importante, Então Vou Usar um Certificado Profissa")

Se você vai usar esse script em produção, pegue um certificado assinado por uma autoridade tipo a Verisign, DigiCert, ou pela equipe de TI da sua empresa.

Crie uma CA interna da MS e coloca todo mundo para confiar nela. Vou fazer um post disso depois



 

Passo 2: Assinando o Script (A Hora da Verdade)

Agora que você tem seu certificado, é hora de colocar a assinatura no script.

  1. Primeiro, vamos caçar aquele certificado que você criou ou pegou:


$cert = Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert | Where-Object { $_.Subject -match "SeuCertificadoLegal" }

  1. Troque "SeuCertificadoLegal" pelo nome que você escolheu pro certificado.

  2. Agora, é só assinar o script com estilo:


Set-AuthenticodeSignature -FilePath "C:\caminho\para\seu_script.ps1" -Certificate $cert

no final do arquivo que vc escolheu tem que aparecer algo como


  • -FilePath: É o endereço do seu script. Coloque o caminho certinho, senão o PowerShell vai dar aquele "Não encontrado!".

  • -Certificate: O certificado que você caçou no passo anterior. É com ele que você vai lacrar o script.


 

Passo 3: Verificando a Assinatura (Conferindo o Serviço)

"Assinei mesmo? Será que funcionou?" Você pode verificar rapidinho:

Get-AuthenticodeSignature -FilePath "C:\caminho\para\seu_script.ps1" | fl

Ele vai te mostrar o certificado usado e se a assinatura foi aplicada direitinho. Pode respirar aliviado!



ATENÇÃO:
Vai aparecer um erro mas e por conta do certificado não ser confiável (Foi criado por vc mesmo kkkk) mas vai funcionar. Se tiver um certificado válido tudo vai funcionar 100%


Passo 4: Configurar a Política de Execução (É Tipo o "Portão de Segurança")

Agora, pra que o PowerShell deixe você rodar esses scripts, tem que definir uma política de execução. Os níveis mais comuns são:

  • RemoteSigned: Scripts baixados da internet têm que estar assinados. Local, não precisa.

  • AllSigned: Todo e qualquer script precisa ser assinado. Sem exceção!

Quer mudar a política? Roda isso aí:

Set-ExecutionPolicy AllSigned

Obs: Talvez você precise ser o Mega admin (administrador) pra fazer isso funcionar.



 

Coisas Pra Ficar de Olho 👀


  • Certificado de Teste: Certificado "meia boca" é ótimo pra brincar, mas não pra produção, beleza? É tipo um crachá feito de papel.

  • Distribuindo os Certificados: Se você usou um certificado caseiro, os PCs que vão rodar o script precisam reconhecer esse certificado. Ou seja, eles precisam ter o certificado no "estoque de certificados confiáveis".

  • Proteja sua Chave Privada: Essa é a peça secreta do seu certificado.


Conclusão

Pronto! Agora você é o mestre da assinatura de scripts. Com seus scripts assinados, todo mundo vai saber que eles são os oficiais. Se alterar qualquer coisa nele vc tem que assinar novamente

3 visualizações0 comentário

Posts recentes

Ver tudo

Comments


bottom of page