Ständig gebraucht, häufig vernachlässigt. Die Certificate Authority ist ein integraler Bestandteil jeder AD Umgebung. Meist wird diese jedoch nur einmal eingerichtet und dann vergessen. Zumindest so lange bis etwas nicht mehr funktioniert. Dann wird es schnell chaotisch, denn ohne funktionierender CA fallen viele der Funktionen des AD aus oder gar alles wenn Zertifikate nicht mehr verifiziert werden können. In diesem Blogeintrag möchte ich daher darauf hinweisen wie wichtig die korrekte Einrichtung der CA Backups sind. Im einem zweiten Teil der CA Reihe möchte ich dann einige Hinweise zur korrekten Wiederherstellung einer CA geben. Beginnen möchte ich heute mit dem Backup.

In vielen Fällen wird kein funktionales Backup der CA angelegt und in den meisten Fällen führt dieser Umstand nie zu Problemen, da bei dem Betrieb einer CA so gut wie nie größere Probleme auftreten. Sollte das jedoch einmal der Fall sein, zum Beispiel durch einen technischen Defekt des Servers, hilft es darauf vorbereitet zu sein. Vor allem, da nicht viel Vorbereitung benötigt wird. Ein CA Backup ist schnell eingerichtet, lässt sich größtenteils automatisieren und kann benötigt nur wenige Ressourcen.

Das CA Backup besteht hauptsächlich aus vier Elementen, diese sind:

  • Der Schlüssel und das Zertifikat der CA
  • Die Datenbank der CA
  • Die relevanten Registry Einträge
  • Die Templates

Schlüssel und Zertifikat

Der Schlüssel und das Zertifikat müssen nur sehr selten gesichert werden. Einmal nach der Einrichtung der CA und anschließend jedes Mal wenn der Schlüssel oder das Zertifikat erneuert wurden. Sichern lassen diese sich entweder über die GUI oder via PowerShell.

Das Backup via PowerShell lässt sich durch certutil –backupKey <Pfad> durchführen.

Wie auf dem Screenshot zu sehen, muss hier ein Passwort angegeben werden, mit dem die aus dem Backup resultierende Datei verschlüsselt wird.

Die Datenbank der CA

Für die Datenbank gibt es verschiedene Sicherungsszenarien. Diese sind im Wesentlichen, folgende:

  • Wöchentliches volles Backup und tägliche inkrementelle Backups: Hierbei werden einmal pro Woche vollständige CA Backups angelegt. An jedem Tag wird dann nur die Differenz zum letzten Backup gesichert. Tag 0 wäre also ein volles Backup, Tag 1 der Unterschied zwischen Tag 0 und Tag 1, Tag 2 der Unterschied zwischen Tag 1 und Tag 2, usw. bis zum nächsten vollständigen Backup.
  • Wöchentliche volle Backups und tägliche differentielle Backups: Auch hier wird einmal pro Woche ein vollständiges Backup angelegt. Anschließend wird allerdings immer die Differenz zum letzten „großen“ Backup gesichert. Tag 0 wäre also wieder das komplette Backup, Tag 1 wieder die Differenz zu Tag 0, Tag 2 allerdings nicht die Differenz zu Tag 1, sondern wieder die zu Tag 0, usw. bis zum nächsten vollständigen Backup.
  • Tägliche volle Backups: Wie der Name schon sagt wird hier täglich ein vollständiges Backup der CA Datenbank angelegt.

Im Folgenden gehe ich von einem täglichen vollen Backup aus, da ich diese Konfiguration für die sinnvollste halte, da ein Backup der CA DB weder das Netzwerk noch die Festplatte stark belastet. Theoretisch wäre es auch möglich das Backup noch häufiger auszuführen, da ein tägliches Backup zu der Problematik führt, dass alle zwischen dem letzten Backup und dem Crash der CA ausgestellten Zertifikate nicht in dem Backup enthalten sind und nachträglich wieder eingepflegt werden müssen, ansonsten lassen diese sich nicht mehr widerrufen. Nachvollziehen lassen diese Zertifikate sich indem man CA Auditing konfiguriert. Durch das CA Auditing lässt man sich bei jedem ausgestellten Zertifikat eine E-Mail an eine dafür eingerichtete Mailbox schicken. Diese Mailbox wird im Fehlerfall zu Rate gezogen um die verlorenen Zertifikate zu finden.

Ein Backup der Datenbank lässt sich mit certutil –backupDB <Pfad> anlegen.

Wie hier zu sehen ist, wird nach einem Backup der Datenbank und der Logfiles das Log abgeschnitten. Daher ist es auch aus diesem Grund sinnvoll regelmäßige Backups anzulegen, um nicht Unmengen an Logfiles zu sammeln.

Registry Einträge

Ein Großteil der Konfiguration der CA wird durch Registry Einträge konfiguriert. Diese Einträge lassen sich wie alle anderen Registry-Einträge auch exportieren. Dieser Exportvorgang kann auch via PowerShell durchgeführt werden und sollte, wie auch das Backup der CA DB, täglich durchgeführt werden. Die Belastung der Infrastruktur durch die Sicherung der Registry ist verschwindend gering.

Die Registry-Einträge lassen sich mit reg export sichern. Genauer ist es sinnvoll die Einträge an diesen beiden Stellen zu sichern:

reg export HKLM\System\CurrentControlSet\Services\CertSvc <Pfad\Dateiname.reg> reg export HKLM\System\CurrentControlSet\Services\CertSvc\Configuration <Pfad\Dateiname.reg>

Da es nicht sinnvoll ist auf einem neuen Gerät einfach alle Registrywerte zu importieren, sondern die neuen und die alten erst einmal abgeglichen werden sollten, sollte man sich die Registryeinträge zusätzlich auch in Textform ausgeben lassen. Dazu verwende ich

Certutil –getreg –v > <Pfad\Dateiname.txt>

Die Templates

Auch die Templates lassen sich via PowerShell exportieren. Diese sind wichtig weil es ansonsten kein Zertifikat automatisch verlängert werden kann, weil bei der CA noch kein Zertifikat eingetragen ist. Exportieren kann man die Templates durch folgende Befehle:

Certutil –v –template > <Pfad\Dateiname.txt>

Certutil –v –catemplates <Pfad\Dateiname.txt>

Um die Sicherheit der CA zu gewährleisten, sollten der gesicherten Schlüssel und das Zertifikat getrennt von dem Rest des Backups aufbewahrt werden. Da dieses Backup so selten durchgeführt werden muss, kann der Schlüssel, um ein Höchstmaß an Sicherheit zu gewährleisten, auf einem verschlüsselten USB Stick abgelegt und weggeschlossen werden. Denn, es ist zu bedenken, dass mit dem Schlüssel und dem Zertifikat eine CA eingerichtet werden kann, der die Rechner der Domäne bereits vertrauen. Dass das Backup der Daten auf einem anderen Server im Netzwerk liegen sollte versteht sich von selbst, da ansonsten bei einem Serverausfall keine Wiederherstellung möglich wäre.

Unter [1] finden Sie ein von Microsoft bereitgestelltes Skript, dass die Sicherung der DB, Registry und Templates durchführt. Alternativ können Sie mit Hilfe der oben genannten Befehle ein eigenes Skript erstellen.

Sollte es zu einem Ausfall Ihrer CA kommen, können Sie diese mit den oben genannten Daten wieder herstellen. Es bleibt zu hoffen dass dieser Extremfall niemals eintritt. Aber wenn doch, sind Sie vorbereitet.

Im nächsten Teil zeige ich Ihnen wie Sie eine CA mit Hilfe dieses Backups wiederherstellen können.

Hier geht es zum zweiten Teil der Blogeintragsreihe.

[1] https://gallery.technet.microsoft.com/Backup-Windows-AD-CS-987f0fc6