Sdílet prostřednictvím


Set-AuthenticodeSignature

Přidá podpis Authenticode do skriptu PowerShellu nebo jiného souboru.

Syntaxe

ByPath (Výchozí)

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>]

ByContent

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

Description

Tato rutina je dostupná jenom na platformě Windows.

Rutina Set-AuthenticodeSignature přidá podpis Authenticode do libovolného souboru, který podporuje balíček SIP (Subject Interface Package).

V souboru skriptu PowerShellu má podpis formu bloku textu, který označuje konec pokynů, které jsou spuštěny ve skriptu. Pokud je v souboru při spuštění této rutiny podpis, odebere se tento podpis.

Příklady

Příklad 1 – Podepsání skriptu pomocí certifikátu z místního úložiště certifikátů

Tyto příkazy načtou podpisový certifikát kódu od zprostředkovatele certifikátu PowerShellu a použijí ho k podepsání skriptu PowerShellu.

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

První příkaz použije rutinu Get-ChildItem a zprostředkovatele certifikátu PowerShellu k získání certifikátů v podadresáři Cert:\CurrentUser\My úložiště certifikátů. Jednotka Cert: je jednotka vystavená poskytovatelem certifikátu. Parametr CodeSigningCert, který podporuje pouze poskytovatel certifikátu, omezuje certifikáty načtené na certifikáty s certifikační autoritou. Příkaz uloží výsledek do proměnné $cert.

Druhý příkaz používá rutinu Set-AuthenticodeSignature k podepsání skriptu PSTestInternet2.ps1. Pomocí parametru FilePath určuje název skriptu a parametr Certificate k určení, že certifikát je uložen v proměnné $cert.

Poznámka:

Použití parametru CodeSigningCert s Get-ChildItem vrací pouze certifikáty, které mají autoritu pro podepisování kódu a obsahují privátní klíč. Pokud neexistuje žádný privátní klíč, certifikáty se nedají použít k podepisování.

Příklad 2 – Podepsání skriptu pomocí certifikátu ze souboru PFX

Tyto příkazy používají příkaz Get-PfxCertificate k načtení podpisového certifikátu kódu. Pak ho použijte k podepsání skriptu PowerShellu.

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

První příkaz použije rutinu Get-PfxCertificate k načtení certifikátu C:\Test\MySign.pfx do proměnné $cert.

Druhý příkaz používá k podepsání skriptu Set-AuthenticodeSignature. Parametr FilePathSet-AuthenticodeSignature určuje cestu k podepsanému souboru skriptu a parametr Cert předává proměnnou $cert obsahující certifikát do Set-AuthenticodeSignature.

Pokud je soubor certifikátu chráněný heslem, PowerShell vás vyzve k zadání hesla.

Příklad 3 – Přidání podpisu, který obsahuje kořenovou autoritu

Tento příkaz přidá digitální podpis, který obsahuje kořenovou autoritu v řetězu důvěryhodnosti a je podepsaný serverem časového razítka třetí strany.

$signingParameters = @{
    FilePath      = 'C:\scripts\Remodel.ps1'
    Certificate   = $cert
    HashAlgorithm = 'SHA256'
    IncludeChain  = 'All'
    TimestampServer = 'http://timestamp.fabrikam.com/scripts/timstamper.dll'
}
Set-AuthenticodeSignature @signingParameters

Příkaz používá parametr FilePath k určení podepsaného skriptu a parametru Certificate k určení certifikátu uloženého v proměnné $cert. Používá parametr IncludeChain k zahrnutí všech podpisů do řetězce důvěryhodnosti, včetně kořenové autority. Používá také parametr TimeStampServer k přidání časového razítka k podpisu. Tím se zabrání selhání skriptu při vypršení platnosti certifikátu.

Parametry

-Certificate

Určuje certifikát, který se použije k podepsání skriptu nebo souboru. Zadejte proměnnou, která ukládá objekt představující certifikát nebo výraz, který certifikát získá.

Pokud chcete najít certifikát, použijte Get-PfxCertificate nebo rutinu Get-ChildItem na jednotce certifikátu Cert:. Pokud certifikát není platný nebo nemá code-signing autoritu, příkaz selže.

Vlastnosti parametru

Typ:X509Certificate2
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:1
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Confirm

Před spuštěním cmdletu vás vyzve k potvrzení.

Vlastnosti parametru

Typ:SwitchParameter
Default value:False
Podporuje zástupné znaky:False
DontShow:False
Aliasy:viz

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Content

Tento parametr se zobrazí v seznamu syntaxe, protože je definován v základní třídě, ze které Set-AuthenticodeSignature je odvozen. Podpora tohoto parametru však není implementována v Set-AuthenticodeSignature.

Vlastnosti parametru

Typ:

Byte[]

Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

ByContent
Position:Named
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False

-FilePath

Určuje cestu k podepsanému souboru.

Vlastnosti parametru

Typ:

String[]

Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

ByPath
Position:1
Povinné:True
Hodnota z kanálu:True
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False

-Force

Umožňuje rutině připojit podpis k souboru jen pro čtení. I když používáte parametr Force, rutina nemůže přepsat omezení zabezpečení.

Vlastnosti parametru

Typ:SwitchParameter
Default value:False
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-HashAlgorithm

Určuje algoritmus hash, který Systém Windows používá k výpočtu digitálního podpisu souboru.

Pro PowerShell 7.3 je výchozí hodnota SHA256, což je výchozí algoritmus hash systému Windows. Ve starších verzích je výchozí hodnota SHA1. Soubory podepsané jiným algoritmem hash nemusí být rozpoznány v jiných systémech. Podporované algoritmy závisí na verzi operačního systému.

Seznam možných hodnot najdete v tématu HashAlgorithmName struktura.

Vlastnosti parametru

Typ:String
Default value:SHA256
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-IncludeChain

Určuje, které certifikáty v řetězu důvěryhodnosti certifikátů jsou součástí digitálního podpisu. NotRoot je výchozí.

Platné hodnoty jsou:

  • Signer: Zahrnuje pouze certifikát podepisující osoby.
  • NotRoot: Zahrnuje všechny certifikáty v řetězu certifikátů s výjimkou kořenové autority.
  • All: Zahrnuje všechny certifikáty v řetězu certifikátů.

Vlastnosti parametru

Typ:String
Default value:NotRoot
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-LiteralPath

Určuje cestu k podepsanému souboru. Na rozdíl od FilePathse hodnota parametru LiteralPath používá přesně tak, jak je zadaný. Žádný znak není interpretován jako zástupný znak. Pokud cesta obsahuje únikové znaky, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, aby žádné znaky neinterpretoval jako únikové sekvence.

Vlastnosti parametru

Typ:

String[]

Default value:None
Podporuje zástupné znaky:False
DontShow:False
Aliasy:PSPath, PO

Sady parametrů

ByLiteralPath
Position:Named
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False

-SourcePathOrExtension

Tento parametr se zobrazí v seznamu syntaxe, protože je definován v základní třídě, ze které Set-AuthenticodeSignature je odvozen. Podpora tohoto parametru však není implementována v Set-AuthenticodeSignature.

Vlastnosti parametru

Typ:

String[]

Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

ByContent
Position:Named
Povinné:True
Hodnota z kanálu:True
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False

-TimestampServer

Použije zadaný server časového razítka k přidání časového razítka k podpisu. Zadejte adresu URL serveru s časovým razítkem ve formě řetězce. Adresa URL musí začínat http://.

Časové razítko představuje přesný čas, kdy byl certifikát přidán do souboru. Časové razítko zabraňuje selhání skriptu, pokud vyprší platnost certifikátu, protože uživatelé a programy můžou ověřit platnost certifikátu při podepisování.

Poznámka:

PowerShell 7.3 přidal podporu pro adresy URL https:// s tímto parametrem. Základní rozhraní API ale nepodporuje https. Pokud používáte protokol HTTPS, příkaz vrátí chybu, ale soubor je podepsaný bez časového razítka. Další informace najdete v tématu Problém č. 25130.

Vlastnosti parametru

Typ:String
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-WhatIf

Ukazuje, co se stane, když se příkaz spustí. Cmdlet se nespustil.

Vlastnosti parametru

Typ:SwitchParameter
Default value:False
Podporuje zástupné znaky:False
DontShow:False
Aliasy:Wi

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

CommonParameters

Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.

Vstupy

String

Tento příkaz můžete přesměrovat na řetězec obsahující cestu k souboru.

Výstupy

Signature

Tato rutina vrátí objekt Signature představující hodnotu, kterou nastavil.

Poznámky

Tento cmdlet je dostupný pouze na platformách Windows.