In meinem System Center Umfeld werde ich regelmäßig mit dem Thema PKI konfrontiert. In einem entsprechenden Projekt steht die Erneuerung von Root CA Zertifikat und der untergeordneten ausgebenden Zertifizierungsstellenzertifikate an.
Aus diesem Anlass hier eine kurze Anleitung welche Schritte dabei zu bearbeiten sind.
Situation:
In meinem Szenario beschreibe ich die Vorgehensweise für eine 2-Stufige PKI. Der Einfachheit halber mit einer Offline Root CA und einer Ausgebenden Unternehmenszertifizierungsstelle.
Beide CA sollen ins AD und auf einen Webserver publizieren.
Vorarbeit – Namenssuffix der CRL anpassen auf Root CA und Ausgebender CA
Für eine Übergangszeit werden zwei voneinander unabhängige Vertrauensketten Gültigkeit haben. Ergo benötigt man zwei getrennte CRL Files. Ohne Anpassung des CRL Suffixes funktioniert das leider nicht. Mit einem Certutil Befehl lässt sich das Ziel erreichen:
Beispiel:
certutil -setreg CA\CRLPublicationURLs „1:%WINDIR%\system32\CertSrv\CertEnroll\%%3%%8%%9.crl\n2:http://web.camelot.daoc/pki/%%3%%8%%9.crl\n10:ldap:///CN=%%7%%8,CN=%%2,CN=CDP,CN=Public Key Services,CN=Services,%%6%%10“
Die Variable %8 erzeugt den CRLNameSuffix. Hierdurch wird dem Namen des CRL Files eine inkrementelle Nummer angehängt welche der Nummer des zugrundeliegenden Zertifikates entspricht.
Die CRL die mit dem ursprünglichen (alten) Schlüssel signiert wird heißt in diesem Beispiel: „camelotRootCA.crl“ und die CRL die mit dem neuen Schlüssel signiert wird heißt „camelotRootCA(1).crl“.
Erneuern des Zertifikates auf der Root CA
Certification Authority MMC:
Überprüfung des aktuellen Zertifikates
Root Certification Authority | Properties
-> Nur ein Zertifikat #0
-> noch kein Renew durchgeführt
-> view Certificate | Details | CA Version: v0.0
Erneuerung des Zertifikates
Root Certification Authority | All Tasks | Renew CA Certificate
Stop CA Service: Yes
Renew CA Certificate with new Key Pair: Yes (recommended but depends on the situation)
Start CA Service
Überprüfung ob neues Zertifikat erstellt wurde
Root Certification Authority | Properties
-> Ein Zertifikat #0
-> Ein Zertifikat #1
-> view Certificate | Details | CA Version: v0.0
-> view Certificate | Details | CA Version: v1.1
Verteilen der CRL und des Root CA Zertifikates
Standardpfad: Windows | System32 | CertSrv | CertEnroll
-> die neue CRL und das neue Zertifikat kopieren und übertragen
-> CRL und Zertifikat gehören an die angegebenen Speicherorte wie im Zertifikat hinterlegt.
-> Ich kopiere normalerweise beides auf eine Unternehmens CA und veröffentliche von dort aus im AD und kopiere auf die Webserver
Veröffentlichen des Zertifikates im AD
certutil -dspublish „Name der Zertifikat Datei (1).crt“ RootCA
PKIView zur Kontrolle: Enterprise PKI | Manage AD Containers | AIA Container
PKIView zur Kontrolle: Enterprise PKI | Manage AD Containers | Certification Authorities Container
Es kann eine Zeit dauern bis der Status von Untrusted auf OK wechselt
-> Beschleunigen auf diesem System mit: certutil -pulse
Veröffentlichen der CRL im AD
certutil -dspublish „Name der CRL Datei (1).crl“
PKIView zur Kontrolle: Enterprise PKI | Manage AD Containers | CDP Container
Veröffentlichen beider Dateien auf dem Webserver
Copy Job um beide Files an die angegebenen Orte zu kopieren.
ggf. einen Scheduled Job einrichten.
Erneuern des Zertifikates auf der Ausgebenden CA
Überprüfung des aktuellen Zertifikates
Certification Authority (local) | Properties
-> Nur ein Zertifikat #0
-> noch kein Renew durchgeführt
-> view Certificate | Details | CA Version: v0.0
Erneuerung des Zertifikates auf der Ausgebenden Zertifizierungsstelle
Certification Authority | All Tasks | Renew CA Certificate
Stop CA Service: Yes
Renew CA Certificate with new Key Pair: Yes (recommended but depends on the situation)
Im Falle einer Offline Root CA, muss als nächstes auf „Cancel“ geklickt werden. Danach kann das .REQ File kopiert und auf die Root CA übertragen werden.
Aufgaben auf der Root CA
Root Certification Authority | All Tasks | Submit new Request
-> Auswählen des .REQ Files
Root Certification Authority | Pending Request | Certificate | All Tasks | Issue
Root Certification Authority | Issued Certificates | Open Certificate | Details | Copy to File… | Next | Next | Safe File locally | Finish | OK
-> Übertragen des Zertifikates an die Ausgebende CA
Aufgaben auf der Ausgebenden Zertifizierungsstelle
Certification Authority | All Tasks | Install CA Certificate
-> Stop CA Service: Yes
-> Auswählen des gerade übertragenen Zertifikates
Überprüfung ob neues Zertifikat erstellt wurde
Certification Authority | Properties
-> Ein Zertifikat #0
-> Ein Zertifikat #1
-> view Certificate | Details | CA Version: v0.0
-> view Certificate | Details | CA Version: v1.1
PKIView zur Kontrolle: Enterprise PKI | Manage AD Containers | NTAuthCertificates
-> Hier muss jetzt ein zweites Objekt angezeigt werden
Je nach Konfiguration sollte die Verteilung der CRL kontrolliert und angepasst werden.
Alle neu auszustellenden Zertifikate der Ausgebenden CA werden nun von dem neuen Zertifikat signiert.
Bevor das jemand in einer Produktivumgebung macht, unbedingt in einer Testumgebung ausprobieren und die Vorgehensweise validieren!
Das ist sehr schön und übersichtlich. Aber, wie ändert man in einem Root CA Zertifikat, was abgelaufen ist, die Gültigkeit auf ein neues Datum? Ich finde dazu nirgends eine Beitrag. Zertifikat von Root CA ist abgelaufen und wie wird es erneuert mit z.B. 5 Jahren?