Backup Certificate Authority Powershell CMD

Sicherung der Zertifizierungsstelle

Backup Certificate Authority

Für den Notfall sollte man die Sicherung der Zertifizierungsstelle manuell einmal oder auch gerne öfter durchgeführt und sicher in einem Tresor abgelegt haben.

Die Sicherung der CA sollte folgende Informationen bzw. Daten enthalten.

  • Datenbank der CA
  • Zertifikat mit privatem Schlüssel
  • Konfigurationsdaten aus der Registry
  • Individuelle Sperrlistenverteilpunkte (Webserver oder File-Share)
  • Individuelle DNS-Einträge
  • Informationen zu den installierten Diensten wie z.B. CEP oder OCSP
  • CAPolicy.inf von der Erstinstallation

Die Datenbank kann zusammen mit dem privaten Schlüssel der CA entweder über die GUI oder per Skript gesichert werden.

Zertifizierungsstelle mit CA Zertifikat sichern

Beim erstellen einer Sicherung, bitte immer ein komplexes Kennwort vergeben.

Zertifikatsdatenbank und Zertifikatsdatenbankprotokoll

Die erforderlichen Informationen finden wir in der Registry unter diesem Pfad. Der ganze Schlüssel CertSvc ist zu exportieren.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc

Backup CA Registry

Die individuellen Sperrlistenverteilpunkte sollten in der Dokumentation zu finden sein, die nach der Erstinstallation erstellt wurde 😉

DNS-Einträge sollten ebenfalls in der Dokumentation stehen, ebenso die zusätzlich eingerichteten Dienste.

Die CAPolicy.inf finden wir in der Regel noch immer unter C:\Windows

CAPolicy.inf sichern

Backup der CA per Powershell

Die Zertifizierungsstelle lässt sich auch mittels der Powershell oder CMD sichern.

Diese Befehle sichern entweder die Datenbank inkl. privatem Schlüssel, oder nur die Datenbank oder nur den privaten Schlüssel. Keiner dieser Befehle setzt ein Kennwort auf das Backup.

Backup-CARoleService -Path “C:\BackupCA”
Backup-CARoleService -Path “C:\BackupCA” -DatabaseOnly
Backup-CARoleService -Path “C:\BackupCA” -KeyOnly

Powershell Backup CA

Sichern der Policy.inf
$Path = “\\SecureServer\BackupCA
Copy-Item $Env:windir\CAPolicy.inf -Destination $Path -Force -ErrorActionSilentlyContinue

Backup der CA per CMD

certutil –backupDB C:\BackupCA
certutil –backupKey C:\BackupCA

Beim sichern des Schlüssels wird ein Kennworteingabe erwartet aber nicht erzwungen.

Certutil Backup CA

Optional: Das öffentliche Zertifikate sowie die Zertifikatskette

certutil -ca.cert “C:\BackupCA\CAcert.cer”
certutil -ca.chain “C:\BackupCA\CAchain.p7b”

Backup CA Certificate

Die Einstellungen der CA exportieren

reg export HKLM\System\CurrentControlSet\Services\CertSvc\Configuration Configuration.reg

Backup Certificate Configuration Registry

Sichern der veröffentlichen Zertifikatvorlagen

certutil -catemplates > “C:\BackupCA\CAvorlagen1.txt”
certutil -v -template > C:\BackupCA\CAvorlagen2.txt”

Backup published CA templates

Sichern der CAPolicy.inf

copy C:\Windows\CAPolicy.inf C:\BackupCA

CAPolicy.inf sichern

Restore der Zertifizierungsstelle per CMD

Den Dienst stoppen

net stop certsvc

Import der Datenbank

certutil -f -restoredb C:\BackupCA

Importieren des Registry-Key Configuration.reg. Handelt es sich um eine neuen Server, so muss der Reg-Key entsprechend angepasst werden.

reg import C:\BackupCA Configuration.reg

Zertifikatvorlagen wieder veröffentlichen. Dazu fügt man die Vorlagen kommagetrennt hinter das + ein. Wer eine veröffentlichte Vorlagen wieder zurückziehen möchte der ersetzt das + Zeichen gegen ein – Zeichen.

certutil -setcatemplates +CodeSHA256,RDPAuth,Kerberos,Exchange,DCs,WEB,WEBSHA256

Wer die Vorlagen per Remote wieder zu Verfügung stellen möchte. Bei mir heißt der Server wie die CA.

certutil -config SRVSUBCA\SRVSUBCA -SetCaTemplates +CodeSHA256,RDPAuth,Kerberos,Exchange,DCs,WEB,WEBSHA256

Restore published Certificates

Den Dienst starten

net start certsvc

Migration einer Zertifizierungsstelle

Wer eine CA migrieren möchte oder muss, der kann die CA Rolle installieren und den zuvor gesicherten Private-Key bei der Installation direkt mit angeben. Danach einfach die CMD Befehle zur Wiederherstellung ausführen.

Install-AdcsCertificationAuthority -CAType EnterpriseSubordinateCA -CertFile “C:\BackupCA\SRVSUBCA.p12” -CertFilePassword (Read-Host “Sicherungskennwort” -AsSecureString)

Optionales

Zertifikatvorlagen per Powershell wieder veröffentlichen

$templates = “CodeSHA256″,”RDPAuth”,”Kerberos”,”Exchange”,”DCs”,”WEB”,”WEBSHA256″
foreach ($i in $templates){
Add-CATemplate -Name $i -Force
}

PKI – Commandline certutil