Viele Administratoren verzichten auf die digitale Signierung von eigene PowerShell-Skripten. Um solche PowerShell-Skripte in der lokalen IT-Infrastruktur ausführen zu können wird daher die PowerShell-Ausführungsrichtlinie auf
Unrestricted
konfiguriert. Diese Konfiguration ist ein großes Sicherheitsrisiko für das gesamte Unternehmen.
Wenn das digitale Zertifikat zur Code-Signierung in Ihrem persönlichen Zertifikatsspeicher hinterlegt ist, ist die Signierung besonders einfach.
Wechseln Sie in einer PowerShell_Session in das Verzeichnis, das die zu signierende PowerShell-Datei enthält und signieren Sie die Datei mit den folgenden Befehlen. In diesem Beispiel wird die Datei MyPowerShellScript.ps1
signiert.
# Lesen des Signatur-Zertifikates aus dem persönlichen Zertifikatspeicher# des Anwenders, der die Signierung durchführt$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert# Lesen eines exportierten Signatur-Zertifikates aus einer PFX-Datei# Wenn der Export mit einem Kennwort geschützt ist, werden Sie nach# dem Kennwort gefragt$cert = Get-PfxCertificate -FilePath C:\SCRIPTS\CERTS\CodeSigningVarunagroup.pfx# Digitale Signierung der Datei MyPowerShellScript.ps1Set-AuthenticodeSignature -FilePath MyPowerShellScript.ps1 -Certificate $cert
Wissenswert ist, dass das Cmdlet
Get-PfxCertificate
, im Gegensatz zur Dokumentation bei Microsoft Docs, keinen Parameter-Password
verfügt, um das Kennwort als SecureString zu übergeben.
Verwenden Sie immer ein Code Signing-Zertifikat eines vertrauenswürdigen Drittanbieters.
Konfigurieren Sie nach der Signierung Ihrer PowerShell-Skripte die Ausführungsrichtlinie für Ihre Systeme mit Hilfe einer Gruppenrichtlinie.
Links
- Set-AuthenticodeSignature
- Execution Policy and Group Policy
- Code Signing Zertifikate (Auswahl)
Viel Spaß mit PowerShell!