Compartilhar via


Set-AuthenticodeSignature

Adiciona uma assinatura Authenticode a um script do PowerShell ou outro arquivo.

Sintaxe

ByPath (Default)

Set-AuthenticodeSignature
    [-Certificate] <X509Certificate2>
    [-FilePath] <String[]>
    [-IncludeChain <String>]
    [-TimestampServer <String>]
    [-HashAlgorithm <String>]
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

ByLiteralPath

Set-AuthenticodeSignature
    [-Certificate] <X509Certificate2>
    -LiteralPath <String[]>
    [-IncludeChain <String>]
    [-TimestampServer <String>]
    [-HashAlgorithm <String>]
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Description

O cmdlet Set-AuthenticodeSignature adiciona uma assinatura Authenticode a qualquer arquivo que dê suporte ao Subject Interface Package (SIP).

Em um arquivo de script do PowerShell, a assinatura assume a forma de um bloco de texto que indica o fim das instruções executadas no script. Se houver uma assinatura no arquivo quando esse cmdlet for executado, essa assinatura será removida.

Exemplos

Exemplo 1 – Assinar um script usando um certificado do repositório de certificados local

Esses comandos recuperam um certificado de assinatura de código do provedor de certificados do PowerShell e o usam para assinar um script do PowerShell.

$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert

O primeiro comando usa o cmdlet Get-ChildItem e o provedor de certificados do PowerShell para obter os certificados no subdiretório Cert:\CurrentUser\My do repositório de certificados. A unidade Cert: é a unidade exposta pelo provedor de certificados. O parâmetro CodeSigningCert, que tem suporte apenas pelo provedor de certificados, limita os certificados recuperados para aqueles com autoridade de assinatura de código. O comando armazena o resultado na variável $cert.

O segundo comando usa o cmdlet Set-AuthenticodeSignature para assinar o script PSTestInternet2.ps1. Ele usa o parâmetro FilePath para especificar o nome do script e o parâmetro Certificate para especificar que o certificado é armazenado na variável $cert.

Exemplo 2 – Assinar um script usando um certificado de um arquivo PFX

Esses comandos usam o cmdlet Get-PfxCertificate para carregar um certificado de assinatura de código. Em seguida, use-o para assinar um script do PowerShell.

$cert = Get-PfxCertificate -FilePath C:\Test\Mysign.pfx
Set-AuthenticodeSignature -FilePath ServerProps.ps1 -Certificate $cert

O primeiro comando usa o cmdlet Get-PfxCertificate para carregar o certificado C:\Test\MySign.pfx na variável $cert.

O segundo comando usa Set-AuthenticodeSignature para assinar o script. O parâmetro FilePath de Set-AuthenticodeSignature especifica o caminho para o arquivo de script que está sendo assinado e o parâmetro Cert passa a variável $cert que contém o certificado para Set-AuthenticodeSignature.

Se o arquivo de certificado estiver protegido por senha, o PowerShell solicitará a senha.

Exemplo 3 – Adicionar uma assinatura que inclua a autoridade raiz

Esse comando adiciona uma assinatura digital que inclui a autoridade raiz na cadeia de confiança e é assinado por um servidor de carimbo de data/hora de terceiros.

Set-AuthenticodeSignature -FilePath c:\scripts\Remodel.ps1 -Certificate $cert -IncludeChain All -TimestampServer "http://timestamp.fabrikam.com/scripts/timstamper.dll"

O comando usa o parâmetro FilePath para especificar o script que está sendo assinado e o parâmetro certificado para especificar o certificado salvo na variável $cert. Ele usa o parâmetro IncludeChain para incluir todas as assinaturas na cadeia de confiança, incluindo a autoridade raiz. Ele também usa o parâmetro TimeStampServer para adicionar um carimbo de data/hora à assinatura. Isso evita que o script falhe quando o certificado expira.

Parâmetros

-Certificate

Especifica o certificado que será usado para assinar o script ou o arquivo. Insira uma variável que armazena um objeto que representa o certificado ou uma expressão que obtém o certificado.

Para localizar um certificado, use Get-PfxCertificate ou use o cmdlet Get-ChildItem na unidade de certificado Cert:. Se o certificado não for válido ou não tiver code-signing autoridade, o comando falhará.

Propriedades do parâmetro

Tipo:X509Certificate2
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:1
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Confirm

Solicita sua confirmação antes de executar o cmdlet.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:False
Dá suporte a curingas:False
DontShow:False
Aliases:cf

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-FilePath

Especifica o caminho para um arquivo que está sendo assinado.

Propriedades do parâmetro

Tipo:

String[]

Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

ByPath
Cargo:1
Obrigatório:True
Valor do pipeline:True
Valor do pipeline pelo nome da propriedade:True
Valor dos argumentos restantes:False

-Force

Permite que o cmdlet acrescente uma assinatura a um arquivo somente leitura. Mesmo com o uso do parâmetro Force, o cmdlet não pode substituir as restrições de segurança.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:False
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-HashAlgorithm

Especifica o algoritmo de hash que o Windows usa para calcular a assinatura digital do arquivo.

Para o PowerShell 3.0, o padrão é SHA256, que é o algoritmo de hash padrão do Windows. Para o PowerShell 2.0, o padrão é SHA1. Arquivos assinados com um algoritmo de hash diferente podem não ser reconhecidos em outros sistemas. Quais algoritmos têm suporte dependem da versão do sistema operacional.

Para obter uma lista de valores possíveis, consulte HashAlgorithmName Struct.

Propriedades do parâmetro

Tipo:String
Valor padrão:SHA256
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-IncludeChain

Determina quais certificados na cadeia de confiança do certificado estão incluídos na assinatura digital. NotRoot é o padrão.

Os valores válidos são:

  • Signatário: inclui apenas o certificado do signatário.
  • NotRoot: inclui todos os certificados na cadeia de certificados, exceto para a autoridade raiz.
  • Todos: inclui todos os certificados na cadeia de certificação.

Propriedades do parâmetro

Tipo:String
Valor padrão:NotRoot
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-LiteralPath

Especifica o caminho para um arquivo que está sendo assinado. Ao contrário do parâmetro FilePath, o valor do parâmetro LiteralPath é usado exatamente como ele é digitado. Nenhum caractere é interpretado como caractere curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. Aspas simples indicam ao PowerShell que não deve interpretar nenhum caractere como uma sequência de escape.

Propriedades do parâmetro

Tipo:

String[]

Valor padrão:None
Dá suporte a curingas:False
DontShow:False
Aliases:PSPath

Conjuntos de parâmetros

ByLiteralPath
Cargo:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:True
Valor dos argumentos restantes:False

-TimestampServer

Usa o servidor de carimbo de data/hora especificado para adicionar um carimbo de data/hora à assinatura. Digite a URL do servidor de carimbo de data/hora como uma cadeia de caracteres.

O carimbo de data/hora representa a hora exata em que o certificado foi adicionado ao arquivo. Um carimbo de data/hora impede que o script falhe se o certificado expirar porque usuários e programas podem verificar se o certificado era válido no momento da assinatura.

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-WhatIf

Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:False
Dá suporte a curingas:False
DontShow:False
Aliases:wi

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

Entradas

String

Você pode canalizar uma cadeia de caracteres que contém o caminho do arquivo para Set-AuthenticodeSignature.

Saídas

Signature