Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
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:
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"
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
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
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