Condividi tramite


Set-AuthenticodeSignature

Aggiunge una firma Authenticode a uno script di PowerShell o a un altro file.

Sintassi

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

Descrizione

Il Set-AuthenticodeSignature cmdlet aggiunge una firma Authenticode a qualsiasi file che supporta subject interface package (SIP).

In un file di script di PowerShell la firma ha la forma di un blocco di testo che indica la fine delle istruzioni eseguite nello script. Se è presente una firma nel file quando viene eseguito questo cmdlet, tale firma viene rimossa.

Esempio

Esempio 1- Firmare uno script usando un certificato dall'archivio certificati locale

Questi comandi recuperano un certificato di firma del codice dal provider di certificati di PowerShell e lo usano per firmare uno script di PowerShell.

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

Il primo comando usa il Get-ChildItem cmdlet e il provider di certificati di PowerShell per ottenere i certificati nella Cert:\CurrentUser\My sottodirectory dell'archivio certificati. L'unità Cert: è l'unità esposta dal provider di certificati. Il parametro CodeSigningCert , supportato solo dal provider di certificati, limita i certificati recuperati a quelli con autorità di firma del codice. Il comando archivia il risultato nella $cert variabile .

Il secondo comando usa il Set-AuthenticodeSignature cmdlet per firmare lo PSTestInternet2.ps1 script. Usa il parametro FilePath per specificare il nome dello script e il parametro Certificate per specificare che il certificato viene archiviato nella $cert variabile .

Esempio 2- Firmare uno script usando un certificato da un file PFX

Questi comandi usano il Get-PfxCertificate cmdlet per caricare un certificato di firma del codice. Usarlo quindi per firmare uno script di PowerShell.

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

Il primo comando usa il Get-PfxCertificate cmdlet per caricare il certificato C:\Test\MySign.pfx nella $cert variabile.

Il secondo comando usa Set-AuthenticodeSignature per firmare lo script. Il parametro FilePath di Set-AuthenticodeSignature specifica il percorso del file di script firmato e il parametro Cert passa la $cert variabile contenente il certificato a Set-AuthenticodeSignature.

Se il file del certificato è protetto da password, PowerShell richiede la password.

Esempio 3- Aggiungere una firma che includa l'autorità radice

Questo comando aggiunge una firma digitale che include l'autorità radice nella catena di certificati ed è firmato da un server di timestamp di terze parti.

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

Il comando usa il parametro FilePath per specificare lo script firmato e il parametro Certificate per specificare il certificato salvato nella $cert variabile. Usa il parametro IncludeChain per includere tutte le firme nella catena di attendibilità, inclusa l'autorità radice. Usa anche il parametro TimeStampServer per aggiungere un timestamp alla firma. Ciò evita che lo script non riesca quando scade il certificato.

Parametri

-Certificate

Specifica il certificato usato per firmare lo script o il file. Immettere una variabile che archivia un oggetto che rappresenta il certificato o un'espressione che ottiene il certificato.

Per trovare un certificato, usare o usare Get-PfxCertificate il Get-ChildItem cmdlet nell'unità Certificato Cert: . Se il certificato non è valido o non dispone code-signing dell'autorità, il comando ha esito negativo.

Type:X509Certificate2
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Richiede la conferma dell'utente prima di eseguire il cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

Specifica il percorso di un file da firmare.

Type:String[]
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Force

Consente al cmdlet di aggiungere una firma in un file di sola lettura. Anche usando il parametro Force , il cmdlet non può eseguire l'override delle restrizioni di sicurezza.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HashAlgorithm

Specifica l'algoritmo hash che Windows usa per calcolare la firma digitale per il file.

Per PowerShell 3.0, il valore predefinito è SHA256, ovvero l'algoritmo hash predefinito di Windows. Per PowerShell 2.0, il valore predefinito è SHA1. File firmati con un algoritmo di hash diverso potrebbero non essere riconosciuti in altri sistemi. Gli algoritmi supportati dipendono dalla versione del sistema operativo.

Per un elenco dei valori possibili, vedere HashAlgorithmName Struct.

Type:String
Position:Named
Default value:SHA256
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeChain

Determina quali certificati nella catena di certificati attendibili sono inclusi nella firma digitale. NotRoot è l'impostazione predefinita.

I valori validi sono:

  • Firmatario: include solo il certificato del firmatario.
  • NotRoot: include tutti i certificati nella catena di certificati, ad eccezione dell'autorità radice.
  • Tutti: include tutti i certificati nella catena di certificati.
Type:String
Position:Named
Default value:NotRoot
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-LiteralPath

Specifica il percorso di un file da firmare. A differenza di FilePath, il valore del parametro LiteralPath viene usato esattamente come viene digitato. Nessun carattere viene interpretato come carattere jolly. Se il percorso include caratteri di escape, racchiuderlo tra virgolette singole. Le virgolette singole indicano a PowerShell di non interpretare alcun carattere come sequenze di escape.

Type:String[]
Aliases:PSPath
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-TimestampServer

Usa il server di timestamp specificato per aggiungere un timestamp alla firma. Digitare l'URL del server di timestamp in formato stringa.

Il timestamp rappresenta l'ora esatta in cui il certificato è stato aggiunto al file. Un timestamp evita che lo script non riesca se il certificato scade perché consente a utenti e programmi di verificare la validità del certificato al momento della firma.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Mostra l'esito in caso di esecuzione del cmdlet. Il cmdlet non viene eseguito.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Input

String

È possibile inviare tramite pipe una stringa contenente il percorso del file a Set-AuthenticodeSignature.

Output

Signature