Tags: Zertifikate, Migration
Wenn 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:
- Ohne privaten Schlüssel im PEM, DER oder P7B-Format speichern
- Mit Private Key als PFX exportieren
- Export über certmgr.msc oder certlm.msc
- Zertifikat mit PowerShell exportieren
- Nicht exportierbaren privaten Schlüssel aus der Registry exportieren
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.
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.
Export über die GUI
Die MMC-basierten Tools certmgr.msc und certlm.msc enthalten im Kontextmenü eines Zertifikats unter Alle Aufgaben den Befehl Exportieren.
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 Sicherheitsprinzipal festlegen muss.
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>
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 Registrierdatenbank. 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.
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.
Im daraufhin angezeigten Dialog belässt man die Einstellung Exportbereich auf Ausgewählte Teilstruktur und gibt einen Namen für die Datei an.
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
Verwandte Beiträge
- Active Directory-Zertifikatsdienste zu SHA-2 und KSP migrieren
- Active Directory-Zertifikatdienste auf einen neuen Server migrieren
- Neu in VMware vSphere 6.0: Long-Distance-vMotion, FT für 4 vCPUs, Zertifikatsverwaltung
- VirtualBox-VMs auf andere Hosts migrieren
- TPM, PIN, Passwörter, SID: BitLocker Key Protectors verwalten
Weitere Links