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 Zertifizierungsstelle 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
- Sicherung der Ereignisprotokolle
- Sicherung der veröffentlichten Zertifikatsvorlagen
Die Datenbank kann zusammen mit dem privaten Schlüssel der CA entweder über die GUI oder per Skript gesichert werden.
Beim Erstellen einer Sicherung, bitte immer ein komplexes Kennwort vergeben.
Die erforderlichen Informationen finden wir in der Registry unter diesem Pfad. Der ganze Schlüssel Configuration ist zu exportieren.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration
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
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
Die Registry-Einstellungen der CA exportieren
Invoke-Command {reg export ‘HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration’ C:\BackupCA\CertSvc.reg}
oder per Remote über eine sichere Verbindung
Invoke-Command -ComputerName SRVSUBCA {reg export ‘HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration’ C:\BackupCA\CertSvc.reg} -UseSSL
Sichern der Policy.inf
$Path = “\\SecureServer\BackupCA
Copy-Item $Env:windir\CAPolicy.inf -Destination $Path -Force -ErrorActionSilentlyContinue
Sichern der Ereignisprotokolle
wevtutil export-log Security “C:\BackupCA\EventLog_Security.evtx”
Sichern der veröffentlichten Zertifikate
Get-CATemplate | Foreach-Object { $_.Name } | Out-File -FilePath “C:\BackupCA\CATemplates.txt” –Encoding String –Force
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.
Optional: Das öffentliche Zertifikate sowie die Zertifikatskette
certutil -ca.cert “C:\BackupCA\CAcert.cer”
certutil -ca.chain “C:\BackupCA\CAchain.p7b”
Die Registry-Einstellungen der CA exportieren
reg export HKLM\System\CurrentControlSet\Services\CertSvc\Configuration C:\BackupCA\Configuration.reg
Sichern der veröffentlichen Zertifikatvorlagen
certutil -catemplates > “C:\BackupCA\CAvorlagen1.txt”
certutil -v -template > C:\BackupCA\CAvorlagen2.txt”
Sichern der CAPolicy.inf. Diese Datei enthält grundlegende Konfigurationseinstellungen der CA.
copy C:\Windows\CAPolicy.inf C:\BackupCA
Sichern der Ereignisprotokolle
wevtutil export-log Security “C:\BackupCA\EventLog_Security.evtx”
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 Zertifikatsvorlagen per Remote wieder zu Verfügung stellen möchte, der setzte diesen Befehl ein. Bei mir heißt der Server wie die CA SRVSUBCA.
certutil -config SRVSUBCA\SRVSUBCA -SetCaTemplates +CodeSHA256,RDPAuth,Kerberos,Exchange,DCs,WEB,WEBSHA256
Den Dienst starten
net start certsvc
Restore der Zertifizierungsstelle per Powershell
Den Dienst stoppen
Stop-Service CertSvc
Import der Datenbank
Restore-CARoleService -Path C:\BackupCA -DatabaseOnly -force
Die Registry-Einstellungen der CA wieder importieren
Invoke-Command {reg import ‘HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc’ C:\BackupCA\CertSvc.reg}
Den Dienst starten
Start-Service CertSvc
Migration einer Zertifizierungsstelle
Bevor eine Zertifizierungsstelle den Server wechseln kann, muss die alte Zertifizierungsstelle deinstalliert werden.
Remove-WindowsFeature ADCS-Web-Enrollment; Remove-WindowsFeature ADCS-Cert-Authority -IncludeManagementTools
Wer eine Enterprise\SubordinateCA migrieren möchte, der kann die CA Rolle auf dem neuen Server installieren, und den zuvor gesicherten Private-Key bei der Installation direkt mit angeben. Danach einfach die CMD Befehle zur Wiederherstellung ausführen.
Das CMDLet Install-AdcsCertificationAuthority steht erst nach der Installation der CA-Rolle zur Verfügung.
Install-WindowsFeature AD-Certificate
Install-AdcsCertificationAuthority -CAType EnterpriseSubordinateCA -CertFile “C:\BackupCA\SRVSUBCA.p12” -CertFilePassword (Read-Host “Sicherungskennwort” -AsSecureString)
Optionales
Zertifikatvorlagen per Powershell wieder veröffentlichen oder manuell bereitstellen.
$templates = “CodeSHA256″,”RDPAuth”,”Kerberos”,”Exchange”,”DCs”,”WEB”,”WEBSHA256″
foreach ($i in $templates){
Add-CATemplate -Name $i -Force
}
https://www.der-windows-papst.de/2016/11/09/pki-commandline-certutil/