Zum Inhalt springen

2-Tier Windows PKI Deployment: Offline Root CA erstellen (1/2)

Hallo und herzlich Willkommen zu diesem Tutorial. In dieser Schritt für Schritt Anleitung möchte ich eine 2-Tier Windows PKI aufbauen um diese später für die automatisierte Serverzertifikat oder WLAN-Zertifikat Verteilung über Intune und SCEP nutzen zu können.

Vorbereitungen

  • Windows Server Installation (vorzugsweise WS 2022)
  • Hostname unter Windows vergeben (PKI-ROOTCASRV1)
  • keine Netzwerkkarte, kein AD-Join

Die Umgebung wird später folgendermaßen aussehen:

Installation Active Directory Certificate Services (ADCS)

Im ersten Schritt wird die Serverrolle ADCS installiert. Diese stellt die Basisfunktionalität einer Zertifizierungsstelle unter Windows dar. Hierfür muss der Server-Manager gestartet werden. Anschließend muss die “Rollen oder Feature basierte Installation” ausgewählt und der Server bestätigt werden. Danach kann die Server Rolle „Active Directory-Zertifikatdienste“ hinzugefügt und die Feature Installation bestätigt werden.

Nach Abschluss der Installation muss der Menüpunkt „Active Directory-Zertifikatdienste auf dem Zielserver konfigurieren” ausgewählt werden.

Konfiguration ADCS

Im zweiten Schritt muss die Serverrolle konfiguriert werden. Im neu geöffneten Fenster müssen die Anmeldeinformationen mit Weiter bestätigt werden.

Nun muss der Rollendienst „Zertifizierungsstelle“ ausgewählt werden:

Im Anschluss wird der Installationstyp auf „eigenständige Zertifizierungsstelle“ umgestellt:

Als Zertifizierungsstellen-Typ muss „Stammzertifizierungsstelle“ ausgewählt werden:

Danach muss ein neuer privater Schlüssel erstellt werden. Die Schlüssellänge wird auf 4096-Bit gestellt:

Nun wird ein Name für die Zertifizierungsstelle ausgewählt. Ich nehme hierfür den Namen PKI-RootCA und bestätige die Einstellung mit Weiter.

Die Gültigkeitsdauer wird auf 20 Jahre umgestellt und die Zusammenfassung bestätigt:

Konfiguration Zertifizierungsstelle (CDP / AIA)

Um die Speicherorte der Zertifikate sowie der CRL (Sperrliste für Zertifikate) kümmern wir uns nun. Da der Server selbst die meiste Zeit ausgeschalten und nicht erreichbar sein wird ist der Schritt entsprechend wichtig und sollte nicht übersprungen werden!

Im Servermanager muss unter „Tools“ das Programm Zertifizierungsstelle geöffnet werden. Im Anschluss werden die Eigenschaften der neu erstellten Stammzertifizierungsstelle mittels Rechtsklick -> Eigenschaften geöffnet:

Unter dem Menüpunkt Erweiterungen wird der Sperrlisten-Verteilungspunkt zu aller erst bearbeitet. Folgende Einstellungen müssen getroffen werden:

C:\Windows\System32\CertSrv\CertEnroll\<CaName><CRLNameSuffix>.crl
http://pki.DOMAIN.ENDUNG/CertEnroll/<CaName><CRLNameSuffix>.crl
ldap:///CN=<CATruncatedName><CRLNameSuffix>,CN=<ServerShortName>,CN=CDP,CN=Public Key Services,CN=Services,<ConfigurationContainer><CDPObjectClass>

Zu beachten sind die Eigenschaften des jeweiligen Menüpunktes (diese findest du in der unten befindlichen Bilderreihe) sowie der Menüpunkt selbst, welcher teilweise editiert werden muss. Achtung: Überprüfe die Pfade bitte doppelt. Ein späteres ändern ist zwar möglich, wird aber nur mit hohem Aufwand und einem erneuten ausstellen der SubCA (im späteren Verlauf mehr dazu) funktionieren! Achtung: Die in <> geschriebenen Variablen sollten nicht ersetzt werden.

Gibt den Standardpfad der im Server und der Serverrolle konfigurierten CRL an.

Gibt einen in der Domäne öffentlich zugänglichen Webserver an (welchen wir im zweiten Schritt installieren). Im Prinzip kannst du die Adresse frei aussuchen, solange du die Domäne samt TLD in der DNS Konsole auf deinem Domaincontroller verwalten kannst.

Gibt den Pfad der im Active Directory verankerten CRL an.

Unter „Zugriff auf Stelleninformationen“ müssen folgende Einstellungen getroffen werden:

C:\Windows\system32\CertSrv\CertEnroll\<ServerDNSName>_<CaName><CertificateName>.crt
http://pki.DOMAIN.ENDUNG/CertEnroll/<ServerDNSName>_<CaName><CertificateName>.crt
ldap:///CN=<CATruncatedName>,CN=AIA,CN=Public Key Services,CN=Services,<ConfigurationContainer><CAObjectClass>

Wie oben bereits beschrieben muss auf die Eigenschaften des jeweiligen Menüpunktes geachtet werden. Außerdem sollten auch diese Pfade überprüft werden. Gerne wird die Dateiendung vergessen, was später zu einem erhöhtem Konfigurationsaufwand führt. Auch hier gilt: Die in <> geschriebenen Variablen sollten nicht ersetzt werden.

Gibt den Standardpfad der im Server und der Serverrolle konfigurierten Zertifikate an.

Gibt einen in der Domäne öffentlich zugänglichen Webserver an (welchen wir im zweiten Schritt installieren). Im Prinzip kannst du die Adresse frei aussuchen, solange du die Domäne samt TLD in der DNS Konsole auf deinem Domaincontroller verwalten kannst.

Gibt den Pfad der im Active Directory verankerten Zertifikate an.

Da der Server selbst nicht in der Domäne ist, müssen die Werte der Konfigurationspartition des Active Directory zum Speichern der CDP und AIA-Informationen manuell konfiguriert werden. Hierfür wird eine administrative CMD geöffnet und folgender Befehl eingetippt. Achtung: die Werte für “DC=DOMAIN,DC=TLD” muss natürlich mit dem passenden DN deiner Domäne ersetzt werden:

certutil.exe -setreg CA\DSConfigDN "CN=Configuration,DC=DOMAIN,DC=TLD"

Außerdem muss in der Konsole die Gültigkeitsdauer der CRL sowie der Zertifikate angepasst werden:

certutil.exe -setreg CA\CRLPeriodUnits 52
certutil.exe -setreg CA\CRLPeriod "Weeks"
certutil.exe -setreg CA\CRLOverlapPeriodUnits 12
certutil.exe -setreg CA\CRLOverlapPeriod "Hours"
certutil.exe -setreg CA\ValidityPeriodUnits 10 
certutil.exe -setreg CA\ValidityPeriod "Years"

Die Werte sagen aus, dass die CRL spätestens innerhalb eines Jahres und die ausgestellten (SubCA)-Zertifikate innerhalb von 10 Jahren ausgetauscht werden müssen.

Im Anschluss muss der Service CertSvc neugestartet werden:

net stop certsvc
net start certsvc

Außerdem wird die CRL exportiert:

certutil.exe -CRL

Die Dateien müssen nun von C:\Windows\System32\CertSrv\CertEnroll auf den Domaincontroller, sowie dem SubCA Server (welchen wir erst noch erstellen werden) unter C:\temp kopiert werden. Da die Maschine PKI-ROOTCASRV1 keine Netzwerkanbindung hat, hilft bei einer virtuellen oder physikalischen Maschine das mounten eines USB-Sticks (unter VMWare beispielsweise mittels VMWare Remote Console).

Um das Zertifikat sowie die CRL der RootCA am Domaincontroller bekannt zu machen und einspielen zu können, müssen wir uns im letzten Schritt auf dem DC anmelden und eine administrative CMD öffnen. Folgende Befehle kommen zum Einsatz. Wobei die Werte des entsprechenden Zertifikates sowie die der CRL angepasst werden müssen. Außerdem muss der Wert hinter dem CRL Namen geändert werden. Dieser wird auf den Hostnamen des offline RootCA Servers gesetzt:

certutil -f -dspublish "C:\temp\PKI-ROOTCASRV1_PKI-RootCA.crt" RootCA
certutil -f -dspublish "C:\temp\PKI-RootCA.crl" PKI-ROOTCASRV1

Schlusswort

Herzlichen Glückwunsch, der erste Schritt zu deiner eigenen 2-Tier PKI unter Windows ist geschafft. Die Konfiguration des RootCA Servers ist erledigt. In der nächsten Anleitung widme ich mich dem SubCA Server und der Bekanntmachung der CRLs sowie Zertifikate.