Ich hatte kürzlich die Anforderung alle noch gültigen Zertifikate einer Windows Zertifizierungsstelle zu exportieren, damit die Zertifikate in eine Software für die Zertifikatsverwaltung eingetragen werden konnten.
Ich habe daher ein kleines PowerShell Script erstellt, welches alle Zertifikate die zur Laufzeit des Script noch gültig sind, in einer Ordner zu exportieren. Da für die Zertifikatsverwaltung nur die Zertifikate relevant waren, welche über eine bestimmte Vorlage ausgestellt wurden, kann im Script die entsprechende Vorlage angegeben werden. In meinem Fall war es nicht nötig alle Zertifikate zu exportieren, sondern nur solche, die nicht automatisch erneuert werden.
Im Script müssen daher drei Parameter angepasst werden: Name der CA, Name der Vorlage und der Ordner für den Export. Vielleicht kann das kleine Script ja jemand gebrauchen:
$CAName = "Name der CA"
$TemplateName = "Name der Vorlage"
$ExportDir = "C:\ExportCerts"
$ca = Get-CertificationAuthority -Name $CAName
$allCerts = Get-IssuedRequest -CertificationAuthority $ca -property RawCertificate
$ValidCerts = $allcerts | where {$_.NotAfter -gt (get-date)}
$SANCerts = $ValidCerts | where { $_.CertificateTemplateOid.FriendlyName -match "$TemplateName"}
$pattern = '[^a-zA-Z]'
foreach ($SANCert in $SANCerts) {
$CommonName = $SANCert.CommonName
$FileName = $CommonName -replace $pattern
$filepath = $ExportDir + "\" + "$FileName" + ".cer"
$SANCert.RawCertificate | set-content $filepath
}
Dieses Script findet sich auch auf GitHub: https://github.com/FrankysWeb/Export-CA-Certificates
Hinweis: Es geht hier nur um die Zertifikate, nicht um die privaten Schlüssel. Dieses Script ist nicht für ein Backup einer Zertifizierungsstelle geeignet.