In diesem Beitrag wird ein Zertifikat für die digitale Signatur erstellt, um in PowerShell Dateien digital zu signieren. Ein digitales Zertifikat ist eine Identitätsbescheinigung, die meist von autorisierter Stelle, der Certification Authority (CA), ausgestellt wird, oder eben selbst erstellt wird.
Das Signieren einer Datei erfolgt mit einem Zertifikat. Mithilfe der Kryptografie kann die Echtheit überprüft werden. Dies erfolgt mithilfe des Schlüsselpaars Private-Key und Public-Key. Die Datei wird mit dem Private-Key digital signiert und mit dem Public-Key wird die Identität überprüft.
Wer eine interne CA zur Verfügung hat, oder ein Zertifikat von einer öffentlichen CA bezieht, der kann dieses (sofern es sich für die digitale Signatur eignet) verwenden. Mehr zu einer internen CA in meiner Serie Active Directory Zertifikatsdienste Active Directory Zertifikatsdienste (Teil 1): Installation einer Enterprise Root-CA.
In diesem Artikel wird ein Self-Signed Zertifikat erstellt.
Erstellen eines Self-Signed Zertifikats
PowerShell öffnen und folgenden One-Liner (OK, vielleicht Two-Liner) ausführen:
New-SelfSignedCertificate -DnsName patrick@sid-500.com -CertStoreLocation Cert:\CurrentUser\My\ -Type Codesigning
Das erstellte Zertifikat ist in den Eigenen Zertifikaten (certmgr.msc) zu finden.
Import in Vertrauenswürdige Herausgeber / Stammzertifizierungsstellen
Nun muss das Zertifikat exportiert werden um dann in den Vertrauenswürdigen Stammzertifizierungsstellen und in den Vertrauenswürdige Herausgebern importiert zu werden.
Dazu das Zertifikat öffnen und unter Details – In Datei kopieren … wählen.
Der private Schlüssel sollte nicht mitkopiert werden.
Als Dateiformat *.CER wählen.
Die Datei nun in einem geeigneten Speicherort speichern. (bei mir am Desktop)
Das exportierte Zertifikat muss nun in den Vertrauenswürdigen Stammzertifizierungsstellen und in den Vertrauenswürdigen Herausgebern importiert werden.
Beispiel:
Stellen Sie sicher, dass in beiden Ordnern das Zertifikat aufscheint.
Signieren einer Datei
Um eine Datei mit PowerShell zu signieren steht Set-Authenticodesignature zur Verfügung. In diesem Beispiel handelt es sich um eine .ps1 Datei, also eine PowerShell Datei.
Set-AuthenticodeSignature -FilePath C:\Temp\skript.ps1 -Certificate (Get-ChildItem -Path Cert:\CurrentUser\My\ -CodeSigningCert)
Cool. So jetzt noch in den Eigenschaften der Datei das Getane überprüfen und dann wars das.
Weiter Infos auf Technet im Beitrag New-SelfSignedCertificate oder in meinem Artikel Cyber Security – Pen Testing (Teil 4): Zertifikate und PKI.
Categories: Cyber Security, PowerShell, Windows Server
2 replies »