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.

epicioci / Pixabay

 

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.

Self-Signed Zertifikat erstellen PowerShell

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 -Signernutzen. 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. 🙂

Johannes Huber
 

In seiner Freizeit macht Johannes nichts lieber, als für ITnator Beiträge zu schreiben. Input bekommt er hierfür von Problemen in der IT Administration von Servern, Clients und vielen weiteren IT Komponenten.

Click Here to Leave a Comment Below 0 comments