Set-AuthenticodeSignature
Přidá podpis Authenticode do skriptu PowerShellu nebo jiného souboru.
Syntax
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>]
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
-SourcePathOrExtension <String[]>
-Content <Byte[]>
[-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žívá rutinu Get-ChildItem
a poskytovatele certifikátů PowerShellu k získání certifikátů v Cert:\CurrentUser\My
podadresáři úložiště certifikátů. Jednotka Cert:
je jednotka vystavená poskytovatelem certifikátu. Parametr CodeSigningCert , který je podporován pouze poskytovatelem certifikátu, omezuje certifikáty načtené na ty, které mají podpisovou autoritu kódu. Příkaz uloží výsledek do $cert
proměnné.
Druhý příkaz používá rutinu Set-AuthenticodeSignature
k podepsání PSTestInternet2.ps1
skriptu. Pomocí parametru FilePath určuje název skriptu a parametr Certificate k určení, že certifikát je uložen v $cert
proměnné.
Poznámka:
Použití parametru CodeSigningCert pouze Get-ChildItem
vrací certifikáty, které mají podpisovou autoritu 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í rutinu 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 $cert
proměnné.
Druhý příkaz používá Set-AuthenticodeSignature
k podepsání skriptu. Parametr Set-AuthenticodeSignature
FilePath určuje cestu k podepsanému souboru skriptu a parametr Cert předá $cert
proměnnou 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.
Set-AuthenticodeSignature -FilePath c:\scripts\Remodel.ps1 -Certificate $cert -IncludeChain All -TimestampServer "https://timestamp.fabrikam.com/scripts/timstamper.dll"
Příkaz používá parametr FilePath k určení podepsaného skriptu a parametr Certificate k určení certifikátu, který je uložen v $cert
proměnné. Používá parametr IncludeChain k zahrnutí všech podpisů v řetězci důvěryhodnosti, včetně kořenové autority. Používá také parametr TimeStampServer k přidání časového razítka do 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 použijte rutinu Get-ChildItem
na jednotce Certificate Cert:
. Pokud certifikát není platný nebo nemá code-signing
autoritu, příkaz selže.
Type: | X509Certificate2 |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Před spuštěním rutiny zobrazí výzvu k potvrzení.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Content
Tento parametr se zobrazí v seznamu syntaxe, protože je definován v základní třídě, která Set-AuthenticodeSignature
je odvozena. Podpora tohoto parametru však není implementována v Set-AuthenticodeSignature
.
Type: | Byte[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-FilePath
Určuje cestu k souboru, který je podepsán.
Type: | String[] |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Force
Umožňuje rutině připojit podpis k souboru jen pro čtení. I pomocí parametru Force nemůže rutina přepsat omezení zabezpečení.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 naleznete v tématu HashAlgorithmName Struct.
Type: | String |
Position: | Named |
Default value: | SHA256 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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í hodnota.
Platné hodnoty jsou:
- Podepisující osoby: Zahrnuje pouze certifikát podepisující osoby.
- NotRoot: Zahrnuje všechny certifikáty v řetězu certifikátů s výjimkou kořenové autority.
- Vše: Zahrnuje všechny certifikáty v řetězu certifikátů.
Type: | String |
Position: | Named |
Default value: | NotRoot |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
Určuje cestu k souboru, který je podepsán. Na rozdíl od FilePath se hodnota parametru LiteralPath používá přesně tak, jak je zadána. Žádné znaky nejsou interpretovány jako zástupné znaky. Pokud cesta obsahuje řídicí znaky, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, aby nepřekládaly žádné znaky jako řídicí sekvence.
Type: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SourcePathOrExtension
Tento parametr se zobrazí v seznamu syntaxe, protože je definován v základní třídě, která Set-AuthenticodeSignature
je odvozena. Podpora tohoto parametru však není implementována v Set-AuthenticodeSignature
.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-TimestampServer
Použije zadaný server časového razítka k přidání časového razítka k podpisu. Jako řetězec zadejte adresu URL serveru s časovým razítkem. Adresa URL musí začínat https://
nebo 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í.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Zobrazuje, co by se stalo při spuštění rutiny. Rutina není spuštěna.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Vstupy
Do této rutiny můžete zamísit řetězec obsahující cestu k souboru.
Výstupy
Tato rutina vrátí objekt Signature představující hodnotu, kterou nastavil.
Poznámky
Tato rutina je dostupná jenom na platformách Windows.