
Powershell-Skripte sind schnell erstellt. Diese als „sicher“ zu definieren funktioniert zum Beispiel über ein Zertifikat.
Ein Code-Signing-Zertifikat fungiert als digitaler Ausweis. Durch die digitale Signatur wird dem Nutzer garantiert, dass die Software tatsächlich vom angegebenen Hersteller oder Ersteller stammt und seit der Unterzeichnung nicht manipuliert wurde. Ohne ein solches Zertifikat reagieren moderne Betriebssysteme mit Warnmeldungen vor „unbekannten Herausgebern“, was das Vertrauen der Nutzer massiv beeinträchtigen kann. Bei höheren Schutzfunktionalitäten kann ein Skript eines entsprechenden Herstellers nicht ausgeführt werden.
Um eine Signierung für mich schnell umzusetzen, habe ich mir einen Zweizeiler geschrieben:
$cert = Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert |
Where-Object NotAfter -gt (Get-Date)
Set-AuthenticodeSignature -FilePath "<Datei>" -Certificate $cert
Wenn ich bei der laufenden Session noch nicht meine Authentifizierung für das Zertifikat eingegeben habe, werde ich nach dieser gefragt. Anschließend wird der Zertifikatshash an den Code angehangen.
Über diesen Weg kann auch eine ausführbare Datei, zum Beispiel mit der Endung EXE, signiert werden.