Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Como gerar Assinaturas Digitais para executável com PowerShell

Assinaturas digitais são fundamentais para garantir a autenticidade e a integridade de arquivos executáveis no ambiente Windows. Elas permitem que usuários e sistemas verifiquem se o software foi alterado ou corrompido desde a sua criação. Neste artigo, vamos explorar como gerar assinaturas digitais para executáveis utilizando o PowerShell, uma poderosa ferramenta de automação e gerenciamento de scripts no Windows.


Para gerar uma assinatura digital, você precisará de um certificado digital. Esse certificado pode ser obtido de uma autoridade certificadora (CA) ou pode ser autoassinado para fins de teste. Vamos abordar ambos os casos neste artigo.


Exemplos:


Gerando um Certificado Autoassinado


Primeiro, vamos criar um certificado autoassinado. Este tipo de certificado é útil para testes e ambientes de desenvolvimento.


# Cria um certificado autoassinado
$cert = New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=MyCodeSigningCert" -CertStoreLocation "Cert:\CurrentUser\My"

Exportando o Certificado


Após criar o certificado, precisamos exportá-lo para um arquivo PFX, que inclui a chave privada necessária para a assinatura.


# Exporta o certificado para um arquivo PFX
$certPassword = ConvertTo-SecureString -String "P@ssw0rd" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath "C:\Path\To\MyCodeSigningCert.pfx" -Password $certPassword

Assinando o Executável


Agora que temos o certificado, podemos usá-lo para assinar um executável. Para isso, utilizamos a ferramenta signtool.exe, que faz parte do Windows SDK.


# Caminho para o executável
$executablePath = "C:\Path\To\YourExecutable.exe"

# Caminho para o signtool.exe (certifique-se de que o Windows SDK está instalado)
$signtoolPath = "C:\Program Files (x86)\Windows Kits\10\bin\x64\signtool.exe"

# Comando para assinar o executável
Start-Process -FilePath $signtoolPath -ArgumentList "sign /f C:\Path\To\MyCodeSigningCert.pfx /p P@ssw0rd /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 $executablePath" -Wait

Verificando a Assinatura


Para garantir que o executável foi assinado corretamente, podemos verificar a assinatura digital.


# Comando para verificar a assinatura
Start-Process -FilePath $signtoolPath -ArgumentList "verify /pa $executablePath" -Wait

To share Download PDF