Bei der Arbeit mit PowerShell-Skripten oder ausführbaren Dateien ist die Codesignierung ein wichtiger Schritt, um Vertrauen und Sicherheit zu gewährleisten. Nicht signierter Code kann Warnungen auslösen, unter bestimmten Ausführungsrichtlinien nicht ausgeführt werden oder in Unternehmensumgebungen sogar vollständig blockiert werden.
In diesem Leitfaden werden wir beide Teile des Prozesses behandeln:
- Erstellung eines selbstsignierten Zertifikats für die Codesignierung und
- dieses Zertifikat zum Signieren Ihrer Skripte oder ausführbaren Dateien zu verwenden.
Wir werden zwei Methoden demonstrieren – mit PowerShell und mit alternativen Windows-Tools – so dass Sie die Methode wählen können, die am besten zu Ihrem Szenario passt.
Erstellen eines selbstsignierten Code-Signatur-Zertifikats mit PowerShell
- Führen Sie PowerShell als Administrator aus.
- Verwenden Sie das folgende Beispiel, um ein selbstsigniertes Stammzertifikat namens ExampleCert zu erstellen. Es wird automatisch in ‘Zertifikate\Aktueller Benutzer\Persönliche\Zertifikate’ installiert
- Um das Zertifikat anzuzeigen, öffnen Sie mmc.exe oder Manage User Certificates.
$cert = New-SelfSignedCertificate -Type CodeSigning -KeySpec Signature `
-Subject "CN=ExeCert" -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation "Cert:\CurrentUser\My" -KeyUsageProperty Sign -KeyUsage CertSignErstellen Sie ein selbstsigniertes Code-Signatur-Zertifikat mit makecert.exe
- Laden Sie das Windows-SDK herunter und installieren Sie es.
Makecert.exe ist im Windows SDK enthalten, das Sie von der offiziellen Microsoft-Website herunterladen können. - Führen Sie die Eingabeaufforderung (cmd.exe) als Administrator aus.
- Navigieren Sie zu dem Ordner, der makecert.exe enthält
cd "%programfiles%\Microsoft SDKs\Windows\v7.1\Bin"4. Um das Zertifikat zu erstellen, führen Sie den folgenden Befehl aus:
makecert -r -sv C:\work\mkcert.pvk -n CN="mkcert" C:\work\mkcert.cer5. Geben Sie im Dialogfenster ein Passwort ein und bestätigen Sie es.

6. Führen Sie dann die beiden folgenden Befehle aus, um dieses Zertifikat in ein privates .pfx-Zertifikat mit einem Passwort umzuwandeln:
cert2spc C:\work\mkcert.cer C:\work\mkcert.spc
pvk2pfx -pvk C:\work\mkcert.pvk -pi 1 -spc C:\work\mkcert.spc -pfx C:\work\mkcert.pfx -po 1Legen Sie im zweiten Befehl das im vorherigen Schritt eingegebene Passwort auf die Tasten -pi und -po fest.
Als Ergebnis erhalten wir das private Zertifikat mkcert.pfx.
So signieren Sie ein Skript oder eine ausführbare Datei mit PowerShell
- Installieren Sie zunächst Ihr Zertifikat im Root-Zertifikatsspeicher der Maschine und im persönlichen Speicher.
- Um ein Skript zu signieren, verwenden Sie den folgenden Befehl. Ersetzen Sie Thumbprint durch den Thumbprint Ihres Zertifikats und geben Sie den Pfad zu $fileToSigning an.
$thumbPrint = "E4076DF19CF1A7C836A0227FB12F733D216474DF"
$fileToSigning = "C:\PACKAGES\Change WMI Object Structure.ps1"
set-AuthenticodeSignature $fileToSigning (Get-ChildItem Cert:\LocalMachine\Root\$thumbPrint -codesign)
3. In der PowerShell-Konsole sehen Sie das Ergebnis dieses Befehls. In der Spalte Status können Sie überprüfen, ob die Signierung erfolgreich war.

4. Wenn Sie das signierte Skript in Windows PowerShell ISE öffnen, sehen Sie einen Kommentar mit dem Signaturblock am Ende der Datei. Um zu überprüfen, ob das Skript signiert wurde, ändern Sie die Ausführungsrichtlinie in AllSigned
Set-ExecutionPolicy AllSigned5. Wenn Sie versuchen, ein nicht signiertes Skript auszuführen, wird es nicht gestartet. Es werden nur signierte Skripte ausgeführt.

So signieren Sie ein Skript oder eine ausführbare Datei mit signtool.exe
Um Skripte und ausführbare Dateien zu signieren, können Sie signtool.exe verwenden. Dieses Tool ist im Windows-SDK enthalten, das Sie von der offiziellen Microsoft-Website herunterladen können.
- Laden Sie zunächst das Windows-SDK herunter und installieren Sie es.
- Führen Sie die Eingabeaufforderung (cmd.exe) als Administrator aus.
- Navigieren Sie zu dem Ordner, der signtool.exe enthält. Sie können dazu den folgenden Befehl verwenden:
cd "%programfiles%\Microsoft SDKs\Windows\v7.1\Bin"4. Jetzt haben Sie signtool.exe und ein Zertifikat (wie Sie es erstellen, wurde bereits beschrieben). Sie können nun mit dem Signieren beginnen.
Verwenden Sie den folgenden Befehl, wobei C:\work\example.pfx der Pfad zu Ihrem Zertifikat und C:\work\example.ps1 der Pfad zu der Datei ist, die Sie signieren möchten:
signtool sign /f c:\work\example.pfx /p 1 /t http://timestamp.verisign.com/scripts/timstamp.dll /v c:\work\example.ps1
Achten Sie auf das Ergebnis dieses Befehls: die Anzahl der Warnungen und die Anzahl der Fehler. Wenn dieser Schritt fehlschlägt, ist der Exit-Code anders als 0, also überprüfen Sie den Befehl.
Um das Ergebnis zu überprüfen, klicken Sie mit der rechten Maustaste auf die ausführbare Datei, wählen Sie Eigenschaften und öffnen Sie die Registerkarte Digitale Signaturen. Auf dieser Registerkarte können Sie die Signatur sehen.

Brauchen Sie Hilfe?
Anwendungspaketierung kann schwierig sein, und versteckte Fallstricke verlangsamen oft den Prozess.
Apptimized-Experten sorgen dafür, dass Ihre Anwendungen verpackt, getestet und ohne Überraschungen einsatzbereit sind.
Wenn Sie Fragen haben oder Ihren Verpackungsbedarf besprechen möchten, kontaktieren Sie uns.