Self-Signed Zertifikat erstellen mit Powershell
Microsoft PowerShell ist inzwischen sehr mächtig. Wir können nicht nur die Windows Umgebung verwalten, sondern sogar Daten erzeugen. Unter anderem ist es möglich ein Self-Signed Zertifikat erstellen zu lassen mit PowerShell. Um ein eigenes Zertifikat erstellen lassen zu können, sind aber nur wenige Zeilen Code notwendig. Wir zeigen wie das zu realisieren ist.
Self-Signed Zertifikat erstellen mit PowerShell
Natürlich ist das Erstellen von eigenen Zertifikaten, also von Self-Signed Zertifikaten kostenlos. Diese Zertifikate können natürlich auch Log-In und Anmelde-Informationen verschlüsseln, doch was haben diese dann für einen Nachteil? Der Nachteil ist, dass viele Webserver eine Sicherheitswarnung anzeigen, wenn diese Zertifikate nicht von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wurden. Aber das nur am Rande. Jetzt erstellen wir ein eigenes Zertifikat mit Passwort als SecureString.
Um nun das eigene Zertifikat erstellen zu können, benötigen wir folgendes PowerShell Script:
#Zertifikat wird erstellt $MeinCert = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname your.domain #Tumbprint abspeichern $MeinTumbprint = $MeinCert.thumbprint #Passwort zum Exportieren hinterlegen $MeinPasswort = ConvertTo-SecureString -String 'DeinPasswort' -Force -AsPlainText #Zertifikat exportieren Export-PfxCertificate -cert cert:\localMachine\my\$MeinTumbprint -FilePath C:\MeinPfad\MeinCert.pfx -Password $MeinPasswort
- Zeile 02: Zertifikat wird als “Computer-Zertifikat” erstellt
- Zeile 05: Thumbprint des Zertifikats wird gelesen
- Zeile 08: Passwort wird als Secure-String hinterlegt
- Zeile 11: PFX Zertifikat wird mit dem Kennwort abgespeichert
Außerdem ist es möglich nach dem Parameter “-dnsname” in Zeile 2 mehrere DNS Namen zu konfigurieren. (Mit Komma getrennt)
Anderes Self-Signed Zertifikat erstellen
Natürlich gibt es in den Zertifikaten Unterschiede. Daher ist es möglich, verschiedene Zertifikate erstellen zu lassen. Hie haben wir noch ein paar andere Arten für euch. Das Zertifikat wird im Script oben in Zeile 2 erzeugt. Daher müsstet ihr natürlich die Zeile 2 anpassen.
Root-Zertifikat erstellen
Es ist möglich eine Art Root-Zertifikat zu erstellen. Das hat den Vorteil, dass wir mit diesem Root Zertifikat die anderen Zertifikate signieren können.
New-SelfSignedCertificate -CertStoreLocation cert:\LocalMachine\My -DnsName "Your Local Root CA" -KeyUsage DigitalSignature,CertSign -NotAfter (Get-Date).AddYears(5) -FriendlyName "Your Local Root CA"
Um nun ein anders Zertifikat mit diesem “Root Zertifikat” signieren zu können, müssen wir den Befehl -Signer
nutzen. Zuerst holen wir uns den Thumbprint des Zertifikats in eine Variable und geben diese dann beim Erzeugen mit.
#root cert in variable $root = (Get-ChildItem -Path cert:\localmachine\my\%CERT-THUMBPRINT%) #cert mit root-cert signieren New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName your.domain -Signer $root -NotAfter (Get-Date).AddYears(5) -KeyUsage KeyEncipherment,DigitalSignature
Somit wurde nun das neue Cert mit dem “Root” signiert.
SAN Zertifikat erstellen
Um ein normales SAN Zertifikat erstellen zu können, nutzen wir diesen einfachen Befehl. Die DNS Namen können mit einem Komma getrennt werden.
New-SelfSignedCertificate -DNSName "server1.your.domain", "server2.your.domain" -certstorelocation cert:\localmachine\my
Wildcard Zertifikat erstellen
Wildcard Zertifikate werden verwendet, wenn man mehrere Subdomains, beziehungsweise Server abdecken möchte. Hier Sagt man beispielsweise: “*.your.domain“.
New-SelfSignedCertificate -DNSName "*.your.domain" -certstorelocation cert:\localmachine\my
Mit dem Stern kann man also alle Sub-Domains mit dem Zertifikat “abdecken.”
Codesigning Zertifikat erstellen
Um Software oder Quell-Code signieren zu können, werden so genannte Code-Signing Zertifikate benötigt. Diese lassen sich auch mit PowerShell erstellen:
New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -Subject "CN=YOURDOMAIN" -Signer $root -NotAfter (Get-Date).AddYears(3) -KeyLength 2048 -KeyUsage DigitalSignature -Type CodeSigningCert -KeyExportPolicy Exportable
Wie ihr sehen könnt, ist es mit PowerShell sehr einfach ein Self-Signed Zertifikat erstellen zu können. Ich hoffe wir könnten es euch einfach erklären und darstellen. 🙂