Zertifikate als CER, DER, P7B oder PFX exportieren


    Tags: ,

    Zertifikat-SymbolWenn man ein Zertifikat auf einen anderen Rechner übertragen muss, dann ist es eine übliche Praxis, dieses aus dem Store zu exportieren und auf dem Zielsystem zu importieren. Welches Exportformat dabei zur Verfügung steht, hängt davon ab, ob man den privaten Schlüssel ebenfalls transferieren möchte bzw. ob dieser überhaupt exportierbar ist.

    Windows hinterlegt die Zertifikate in einem lokalen Speicher, dessen Inhalt man mit certmgr.msc, certlm.msc oder PowerShell auslesen und analysieren kann.

    Beispielsweise lässt sich der Ordner Eigene Zertifikate für den lokalen Computer mit

    Get-ChildItem Cert:\LocalMachine\my

    anzeigen.

    Darin besteht auch der erste Schritt, wenn man ein Zertifikat exportieren möchte. So kann man dessen Eigenschaften ermitteln, etwa den Fingerabdruck oder ob es über einen privaten Schlüssel verfügt:

    Get-ChildItem Cert:\LocalMachine\my | where HasPrivateKey -eq $true

    Für den Export gibt es folgende Optionen:

    Zertifikat ohne privaten Schlüssel exportieren

    Wenn Zertifikate keinen Private Key besitzen, dieser nicht exportierbar ist oder man ihn nicht exportieren möchte, dann schreibt man das Zertifikat in eine .cer-Datei.

    Windows verwendet diese Dateiendung sowohl für das Base64-codierte PEM als auch für das binäre DER-Format. Alternativ steht noch PKCS # 7 mit der Endung .p7b zur Auswahl.

    Exportoptionen für Zertifikate ohne privaten Schlüssel oder wenn dieser nicht exportiert werden soll

    PFX (PKCS # 12) für privaten Schlüssel

    Exportiert man ein Zertifikat indes mitsamt dem privaten Schlüssel, dann bietet Windows dafür das .pfx-Format (PKCS # 12) an.

    Eine solche Datei wird verschlüsselt gespeichert, um den Private Key zu schützen, und man muss es zusätzlich mit einem Passwort absichern oder den Zugriff auf bestimmte Prinzipale (Gruppen oder User) einschränken.

    Beim Export nach PFX kann man unter anderem auswählen, was in die Datei übernommen wird.

    Export über die GUI

    Die MMC-basierten Tools certmgr.msc und certlm.msc enthalten im Kontextmenü eines Zertifikats unter Alle Aufgaben den Befehl Exportieren.

    Exportbefehl im Kontextmenü von Zertifikaten in certlm.msc

    Er startet einen Wizard, der nach dem Willkommen-Dialog bei vorhandenem und exportierbarem Private Key fragt, ob dieser exportiert werden soll.

    Abhängig von dieser Auswahl erhält man die oben beschriebenen Exportoptionen .cer oder .p7b beziehungsweise .pfx. Im Fall von .cer und .p7b gibt man dann nur noch den Dateinamen an und schließt den Vorgang ab.

    Bei .pfx gibt es noch einen Zwischenschritt, bei dem man ein Passwort oder einen Sicherheits­prinzipal festlegen muss.

    Den exportierten privaten Schlüssel muss man über ein Kennwort oder einen Sicherheitsprinzipal schützen.

    Zertifikat mit PowerShell exportieren

    PowerShell sieht je nach Zielformat zwei separate Cmdlets für diese Aufgabe vor. Für das Exportieren ohne privaten Schlüssel ist Export-Certificate zuständig.

    Der optionale Parameter Type unterstützt CERT, P7B und SST, wenn man mehrere Zertifikate speichern möchte. CERT nutzt das DER-codierte Binärformat, die Base64-Variante steht hier nicht zur Verfügung. Vorgegeben ist CERT.

    Ein Aufruf könnte so aussehen:

    Export-Certificate -Type CERT -FilePath mycert.crt -Cert Cert:\LocalMachine\my\<Fingerabdruck>

    Zertifikat ohne privaten Schlüssel im DER-Format exportieren

    Für den Export im PFX-Format sieht Microsoft das Cmdlet Export-PfxCertificate vor. Dieses erwartet entweder den Parameter Password oder ProtectTo, um die Datei zu schützen. Das Passwort muss man als Secure String übergeben:

    $pw = Read-Host -Prompt "Passwort eingeben" -AsSecureString

    Export-PfxCertificate -Password $pw -FilePath 9B.pfx `
    -Cert Cert:\LocalMachine\my<Fingerabdruck>

    ProtectTo erwartet einen Wert wie "domain\user" oder "domain\gruppe", wobei man mehrere davon durch Komma trennt.

    Zertifikate aus der Registry exportieren

    Eine weitere Option zum Exportieren von Zertifikaten bietet die Registrier­datenbank. Sie ist vor allem dann interessant, wenn der private Schlüssel als nicht exportierbar markiert ist. Diese Exportsperre ist keine Eigenschaft des Zertifikats, sondern ein Feature des Windows Certificate Store, das man beim CSR durch Anhaken der entsprechenden Option aktiviert.

    Es schützt zwar den privaten Schlüssel vor Diebstahl, kann aber unter bestimmten Umständen hinderlich sein. Das gilt zum Beispiel, wenn man einen kritischen Service auf einen anderen Rechner migrieren muss und das Zertifikat nicht einfach ersetzen kann.

    In dieser Situation verweigern sowohl die MMC-basierten Tools als auch PowerShell den Export im PFX-Format.

    Das Zertifikat besitzt zwar einen Private Key, aber dieser lässt sich nicht exportieren.

    Für die Registry gilt diese Einschränkung indes nicht. Um zum Beispiel ein Computer-Zertifikat aus Eigene Zertifikate zu exportieren, wechselt man im Registry Editor im Zweig HKEY_LOCAL_MACHINE nach \SOFTWARE\Microsoft\SystemCertificates\My\Certificates.

    Dort kann man das gewünschte Zertifikat anhand des Thumbprint identifizieren und aus dessen Kontextmenü den Befehl Exportieren ausführen.

    Befehl zum Exportieren eines Zertifikats in der Registry

    Im daraufhin angezeigten Dialog belässt man die Einstellung Exportbereich auf Ausgewählte Teilstruktur und gibt einen Namen für die Datei an.

    Dialog zum Speichern des Zertifikats in einer .reg-Datei

    Die resultierende .reg-Datei überträgt man auf den gewünschten Rechner und importiert das Zertifikat durch Doppelklick auf den Dateinamen im Explorer.

    Dieser Prozess markiert den privaten Schlüssel auf dem Zielrechner grundsätzlich als nicht exportierbar, selbst wenn das ursprüngliche Zertifikat den Export des Private Key erlaubt.

    Zusammenfassung

    Wenn man ein Zertifikat aus dem Store eines Windows-Rechners exportieren möchte, dann hängt das verfügbare Zielformat davon ab, ob man den privaten Schlüssel mit einschließt. Tut man das nicht, dann kann man zwischen .cer und .p7b wählen, andernfalls ist dafür .pfx (PKCS #12) vorgesehen.

    Als Tools für diesen Zweck kommen die einschlägigen Snap-ins für die MMC sowie PowerShell in Frage. Letztere bietet dafür zwei separate Cmdlets.

    Eine besondere Rolle spielt der Export über die Registry. Hierüber lässt sich der private Schlüssel exportieren, selbst wenn er als nicht exportierbar markiert wurde.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut

    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Verwandte Beiträge

    Weitere Links