25 September 2012 Zertifikat Robert Muehsig

Ich hatte in letzter Zeit einige Aufgaben erledigt, wo unbedingt Zertifikate benötigt werden. Darunter gehörte unter anderem das Signieren von Assemblies, ClickOnce Installern, SSL Zertifikate hinzufügen und mit Azure rumexperimentieren.

Da ich nicht regelmäßig damit arbeite nun mal ein kurzer Blogpost wie man (Test-) Zertifikate erstellt, diese managed und wie man diese auch wieder Exportieren kann. Natürlich beziehe ich mich hierbei auf Windows und ich mache das aus der Sicht eines .NET Entwicklers – wie das auf Linux und co. aussieht: Keine Ahnung. Ich hoffe auch, dass die Angaben soweit stimmen – ich bin kein Vollzeit Admin, welcher sich nur mit Zertifikaten rumschlägt. Für die Entwicklung hat es jedenfalls gereicht ;)

(Test-) Zertifikate erstellen über den IIS

Zertifkate kann man im Windows über mehrere Wege erstellen und verwalten. Insbesondere der IIS bietet alles was man im Zusammenhang mit Zertifikaten benötigt.

Wir wollen zu Entwicklungszwecken ein eigenes Zertifikat erstellen:

image

Dafür einfach nach dem Klick einen Namen eingeben und den Zertifikatsstore wählen (es gibt nur Personal oder Computer – kommen wir dann noch drauf)

image

Danach wurde das Zertifikat erstellt und wir sehen es direkt im IIS und könnten es nun einer Seite zuordnen.

image

Weitere Aktionen kann man nun im Kontextmenü anstoßen:

image

Vielleicht einer der häufigsten Aufgaben: Das Zertifikat exportieren.

Beim Exportieren wird ein .PFX erzeugt, welche u.A. auch den privaten Key enthält. D.h. diese Dateien sind sensibel und sollten unter keinen Umständen in die falschen Hände geraten wenn es um “echte” Zertifikate geht. Die .PFX ist über ein Passwort gesichert, welches ihr beim Exportieren mit angebt:

image

Danach kann das Zertifikat auf einen anderen Rechner übertragen werden oder auf dem System für andere Zwecke genutzt werden.

Anderer Weg: Über die Microsoft Management Console Zertifikate administrieren.

Wer kein IIS zur Hand hat oder ein mächtigeres Tool sucht, der ist bei der MMC richtig. Es gibt einen so genannten “certmgr.msc” (die Anwendung wird erst angezeigt wenn man alles eingetippt hat).

image

Allerdings gibt es hier einen Haken: Dieser Manager zeigt nur die Zertifikate an, welche dem aktuellen Nutzer zugeordnet sind. Im IIS Beispiel haben wir das Zertifikat auch dem “Personal” Store hinzugefügt. Allerdings kann es auch Sinn machen das Zertifikat für den kompletten Rechner zu hinterlegen, daher lieber direkt in die MMC gehen und selbst die Snap-Ins hinzufügen:

image

 image

Hier sehen wir u.A. auch unser  vorhin angelegtes Zertifikat:

image

Natürlich kann man hier die Zertifikate auch Exportieren, allerdings mit mehr Optionen: Entweder mit privaten Keys oder ohne und dazu noch einige weiteren Einstellungen, welche mir jetzt aber nix gesagt haben ;)

Grundsätzlich:

Mit privaten Keys kommt ein .PFX heraus.

Ohne private Keys kommt ein .CER heraus.

Zertifikate über die Powershell managen:

Ohne GUI kommt man natürlich auch zu den Zertifikaten und zwar über die Powershell:

Über “cd cert:” wechselt man in den Zertifikatsstore und kann sich dort wie in einem Filesystem navigieren.

image

Natürlich kann man die Zertifkate auch Filtern oder Exportieren – die Powershell hat da ja recht viele Möglichkeiten. Unter anderem kann man alle Zertifikate mit privatem Key über dieses Script exportieren:

dir cert:\currentuser\my |
Where-Object { $_.hasPrivateKey } |
Foreach-Object { [system.IO.file]::WriteAllBytes(
"$home\$($_.thumbprint).pfx",
($_.Export('PFX', 'secret')) ) }

Über die CMD Zertifikate erstellen

Über das Tool MakeCert.exe (welches bei der Visual Studio Installation mit dabei ist bzw. im Windows SDK enthalten ist) lassen sich auch Zertifkate über die Kommandezeile erstellen.

Finden, suchen, exportieren – Grundlagen gelegt

Mit den Basics sollten man wenigstens die einfachsten Tools kennen um mit Zertifikaten zu arbeiten. In einem kommenden Blogpost gehe (hoffentlich halte ich jetzt mein Versprechen) auf das Signieren von Assemblies ein :)


Written by Robert Muehsig

Software Developer - from Dresden, Germany, now living & working in Switzerland. Microsoft MVP & Web Geek.
Other Projects: KnowYourStack.com | ExpensiveMeeting | EinKofferVollerReisen.de

If you like the content and want to support me you could buy me a beer or a coffee via Litecoin or Bitcoin - thanks for reading!