Skripte Signieren

Gute Anleitung mit aktuellen Werkzeugen der PowerShell 5

  • bei „Weltner , PowerShell 5“ (S. 210 ff.)

  • oder Schwichtenberg PowerShell 5 (S . 110 ff.)

Modifiziertes, aktualisiertes Basis-Cmdlet:

(voller Funktionsumfang ab Windows 10 bzw. Windows Server 2016; die Versionen unter Windows 8 und Windows Server 2012 R2 sehr eingeschränkt nutzbar)

New-SelfSignedCertificate    # Erstellen Selbstsignierter Zertifikate ab Win 10 bzw. 2016!

Alternativ gab/gibt es natürlich das Kommandozeilentool makecert.exe (aber: als deprecated bezeichnet).

Man kann auch die Funktion New-SelfSignedCertificateEx aus dem Microsoft Skript Center bereitstellen:

Download-Seite

Exemplarische Vorgehensweise(n): (getestet unter Windows 10 Pro)

Ausführlich: Weltner, PowerShell 5, Kapitel 5: Skripte einsetzen; Skripte digital signieren S. 210 ff.

In Kürze: Schwichtenberg S. 110 ff.

New-SelfSignedCertificate -CertStoreLocation "CERT:\Currentuser\MY" -Subject "CN=IhrNameCodeSigning" -TextExtension “2.5.29.37={text}1.3.6.1.5.5.7.3.3”
dir cert:/currentuser/my                                  # Anzeigen lassen
$cert = @(dir “cert:/currentuser/my/”)[0]                 # Zertifikat auswählen
Set-AuthenticodeSignature Softwareinventar3.ps1 $cert     # signieren

Zu beachten: die Zertifikate im CERT:CurrentUserMy gehören nicht zu den vertrauenswürdigen Zertifikaten. So erklären sich auch Fehlermeldungen, die man einfach per Kopieren der selbst ausgestellten Zertifikate „beheben“ kann. Im Firmenumfeld benötigt man hier natürlich andere Zertifkate und Vorgehensweisen.

PFX-Werkzeuge für Zertifikate: (siehe Signatur-Dateien im PFX-Format)

PS E:\_temp> Get-Command *pfxcert*
CommandType     Name                                    Version    Source
-----------     ----                                    -------    ------
Cmdlet          Export-PfxCertificate                   1.0.0.0    PKI
Cmdlet          Get-PfxCertificate                      3.0.0.0    Microsoft.PowerShell.Security
Cmdlet          Import-PfxCertificate                   1.0.0.0    PKI

PS E:\_temp> Get-Command *codesignature*

CommandType     Name                                    Version    Source
-----------     ----                                    -------    ------
Cmdlet          Get-AuthenticodeSignature               3.0.0.0    Microsoft.PowerShell.Security
Cmdlet          Set-AuthenticodeSignature               3.0.0.0    Microsoft.PowerShell.Security

Nochmals: leider unterscheiden sich die Werkzeuge und Ihre Fähigkeiten auf unterschiedlichen OS-Plattformen!