Zum Inhalt

Active Directory Zweistufige PKI aufbauen

Diese Anleitung zeigt, wie Sie schnell und einfach eine Active Directory Zweistufige PKI aufbauen können.

Zeitplanung

Diese Anleitung installiert eine Root sowie eine Issuing CA - dieser Vorgang nimmt 3-6 Stunden! in Anspruch.

Was ist eine PKI und was heißt "zweistufig"?

Eine PKI (Public Key Infrastructure) verwaltet digitale Zertifikate und Schlüssel.

Zweistufig bedeutet: - Root CA: Oberste Vertrauensstelle - Intermediate CA: Wird von der Root CA bestätigt und stellt die eigentlichen Zertifikate aus.

Ziel: Die Root CA bleibt dadurch besser geschützt.

Vorbereitungen

Wir brauchen zwei VMs:

Server Rolle CPU RAM Disk OS AD-joined
PKI01 Root CA 1 vCPU 4 GB 30 GB Windows Server 2019 Standard oder höher Nein
PKI02 Issuing CA 1 vCPU 4 GB 30 GB Windows Server 2019 Standard oder höher Ja

Auf jeder VM wird außerdem folgendes ZIP File entpackt (Download)

Innerhalb des ZIP Files sind zwei Ordner - einmal rootCA und einmal issuingCA - diese Ordner auf den jeweils passenden Servern kopieren, sodass auf jedem Server folgende Verzeichnisstruktur erstellt ist:

1
2
3
C:\Install
C:\rootCA
C:\issuingCA

Hinweis

Über jedem Skript in dieser Anleitung befindet sich der passende Dateiname aus dem ZIP File.

Außerdem brauchen wir eine Webadresse, die aufrufbar sein muss. Wir nehmen in dieser Anleitung folgende:

  • pki.ad.intern

Also los geht's!

PKI01 - Die Root CA

CA Policy konfigurieren

Zuerst muss im Windows-Pfad (C:\Windows) eine Datei namens "capolicy.inf" mit folgendem Inhalt angelegt werden:

[Version]
Signature = "$Windows NT$"

[CRLDistributionPoint]
Empty = true

[AuthorityInformationAccess]
Empty = true

[certsrv_server]
RenewalKeyLength = 4096
RenewalValidityPeriodUnits = 15
RenewalValidityPeriod = years

Hinweis

Damit legen wir fest, dass die Root CA keine CRL bekommt und auch keine AIA - also keine Sperrlisten. Das ist wichtig, da es sich hier um eine offline CA handelt.

Rollen und Features installieren

Als nächstes werden folgende Rollen und Features installiert:

  • Active Directory-Zertifikatsdienste (inkl. der vorgeschlagenen Tools)

PKI01 Serverrollen

Dann wird bei den Rollendiensten nur die "Zertifizierungsstelle" ausgewählt:

PKI01 Rollendienste

Zum Schluss die Zusammenfassung der ausgewählten Rollen:

PKI01 Zusammenfassung

Jetzt kann die Konfiguration der Rolle gestartet werden:

PKI01 Ergebnisse

Active Directory-Zertifikatsdienste konfigurieren

Zuerst wählen wir den User, mit dem das Setup durchgeführt werden soll:

PKI01 User

Als nächstes konfigurieren wir die Zertifizierungsstelle:

PKI01 Rollendienste

Nachfolgend konfigurieren wir folgende Einstellungen:

  1. Installationstyp: Eigenständige Zertifizierungsstelle
  2. ZS-Typ: Stammzertifizierungsstelle
  3. Privater Schlüssel: Neuen privaten Schlüssel erstellen
    1. Kryptografie:
    2. Schlüssellänge: 4096
    3. Hashalgorithmus: SHA256 PKI01 Kryptografie
    4. ZS-Name: PKI01 ZS Name
    5. Gültigkeitsdauer: 15 Jahre

Dann den Assistenten abschließen und es sollte folgende Meldung erscheinen:

PKI01 ADCS Fertig

Wenn wir jetzt die MMC Konsole "certsrv.msc" aufrufen, sollte es so aussehen:

PKI01 Zertifizierungsstelle


Jetzt ist die CA konfiguriert und wir fahren mit der Post Konfiguration fort. Dazu führen wir jetzt folgendes Skript in der Eingabeaufforderung aus:

Achtung

Das Skript muss!! in der Eingabeaufforderung (also "cmd.exe") ausgeführt werden!

Hinweis

Die hervorgehobenen Zeilen (2, 10 und 11) müssen an die eigene Umgebung angepasst werden!

rootCA/Install/01_RootCA_Post_Konfiguration.cmd
net stop certsvc
certutil -setreg CA\DSConfigDN "CN=Configuration,DC=DEMOLABOR,DC=intern"
certutil -setreg CA\ValidityPeriodUnits 15
certutil -setreg CA\ValidityPeriod "years"
certutil -setreg CA\AuditFilter 127
certutil -setreg CA\CRLPeriodUnits 1
certutil -setreg CA\CRLPeriod "years"
certutil -setreg CA\CRLDeltaPeriodUnits 0
certutil -setreg CA\CRLDeltaPeriod "days"
certutil -setreg CA\CRLPublicationURLs "1:%WINDIR%\system32\CertSrv\CertEnroll\%%3%%8%%9.crl\n10:LDAP:///CN=%%7%%8,CN=%%2,CN=CDP,CN=Public Key Services,CN=Services,%%6%%10\n2:http://pki.ad.intern/cert/%%3%%8%%9.crl"
certutil -setreg CA\CACertPublicationURLs "1:%WINDIR%\system32\CertSrv\CertEnroll\%%1_%%3%%4.crt\n2:LDAP:///CN=%%7,CN=AIA,CN=Public Key Services,CN=Services,%%6%%11\n2:http://pki.ad.intern/cert/%%1_%%3%%4.crt"
net start certsvc

Erklärung

Mit diesem Skript setzen wir verschiedene Werte und auch die CRL Publication URL, die dann auf der Issuing CA liegen wird. Dadurch, dass die Root CA nicht AD-integriert ist, müssen wir die URL hier selbst setzen.

Nach der erfolgreichen Ausführung von allen Befehlen, müssen wir die Sperrliste der CA neu publishen. Dafür gehen wir wieder in die "certsrv.msc":

PKI01 Sperrliste Publishen

PKI01 Sperrliste Publishen 2

Nun liegt sowohl das Zertifikat der Root CA, sowie auch die CRL in dem Verzeichnis "C:\Windows\System32\CertSrv\CertEnroll". Wir kopieren beide Dateien in den am Anfang erstellen "rootCA" Ordner:

rootCA/Install/02_rootCA_copy.cmd
copy C:\Windows\System32\CertSrv\CertEnroll\* C:\rootCA\

Diese beiden kopierten Dateien kopieren wir jetzt auf den PKI02 Server (den Issuing CA Server) in den gleichen Ordner "rootCA".

Weiter geht's jetzt mit der Installation der Issuing CA.

PKI02 - Die Issuing CA

Root CA importieren

Die eben kopierten Dateien publishen wir jetzt auf der Issuing CA:

issuingCA/Install/01_IssuingCA_Pre_Konfiguration.cmd
1
2
3
certutil dspublish f C:\rootCA\pki01_DEINE_PKI.crt Rootca
certutil dspublish f C:\rootCA\DEINE_PKI.crl
gpupdate /force

Folgende Ausgabe sollte erscheinen:

1
2
3
4
5
6
7
8
Zertifikat wurde zum Verzeichnisdienstspeicher hinzugefügt.

Basissperrliste wurde zum Verzeichnisdienstspeicher hinzugefügt.

Die Richtlinie wird aktualisiert...

Die Aktualisierung der Computerrichtlinie wurde erfolgreich abgeschlossen.
Die Aktualisierung der Benutzerrichtlinie wurde erfolgreich abgeschlossen.

Rollen und Features installieren

Als nächstes werden auch auf der Issuing CA folgende Rollen und Features installiert:

  • Active Directory-Zertifikatsdienste (inkl. der vorgeschlagenen Tools)

PKI01 Serverrollen

Dann wird bei den Rollendiensten nur die "Zertifizierungsstelle" ausgewählt:

PKI01 Rollendienste

Zum Schluss die Zusammenfassung der ausgewählten Rollen:

PKI01 Zusammenfassung

Jetzt kann die Konfiguration der Rolle gestartet werden:

PKI01 Ergebnisse

Active Directory-Zertifikatsdienste konfigurieren

Zuerst wählen wir den User, mit dem das Setup durchgeführt werden soll:

Hinweis

Hier muss ein Administrator gewählt werden, der der AD Gruppe "Enterprise Admins" (oder zu deutsch "Unternehmens-Administratoren") angehört!

PKI01 User

Als nächstes konfigurieren wir die Zertifizierungsstelle:

PKI01 Rollendienste

Nachfolgend konfigurieren wir folgende Einstellungen:

  1. Installationstyp: Unternehmenszertifizierungsstelle PKI02 CA Typ
  2. ZS-Typ: Untergeordnete Zertifizierungsstelle PKI02 ZS Typ
  3. Privater Schlüssel: Neuen privaten Schlüssel erstellen
    1. Kryptografie:
    2. Schlüssellänge: 4096
    3. Hashalgorithmus: SHA256 PKI01 Kryptografie
    4. ZS-Name: PKI01 ZS Name
    5. Gültigkeitsdauer: 15 Jahre
    6. Zertifikatsanforderung: PKI02 CA Request

Zum Schluss erhalten wir eine Zusammenfassung:

PKI02 CA Zusammenfassung

und folgende Fehlermeldung als Ergebnis:

PKI02 CA Ergebnis

Wir verschieben nun noch die entstandene ".csr" Datei im "C:\" Ordner in den "C:\issuingCA" Ordner.

Issuing CA signieren

Jetzt kopieren wir die CSR Datei, die wir eben mit dem Assistenten erstellt haben, auf die Root CA in den gleichen Ordner, wie auch auf der Issuing CA "C:\issuingCA". Danach öffnen wir wieder die MMC Konsole "certsrv.msc" und navigieren zu folgendem Pfad:

PKI02 CSR Request

Im nächsten Fenster wählen wir die eben abgelegte CSR Datei aus. Diese liegt unter "C:\issuingCA". Sobald der Vorgang abgeschlossen ist, erscheint unter "Ausstehende Anforderungen" jetzt eine neue Anforderung, welche wir genehmigen:

PKI02 ausstehende Requests

Nun ist unsere CSR signiert und das Zertifikat ist unter "Ausgestellte Zertifikate" zu finden. Wir exportieren das Zertifikat und legen es unter "C:\issuingCA" ab:

PKI02 Zertifikat exportieren

Nach fertiggestelltem Export erhalten wir diese Zusammenfassung:

PKI02 Zertifikatsexport fertig

Issuing CA konfigurieren

Jetzt ist die CA eingerichtet und wir fahren mit der Post Konfiguration fort. Dazu führen wir jetzt folgendes Skript in der Eingabeaufforderung aus:

Achtung

Das Skript muss!! in der Eingabeaufforderung (also "cmd.exe") ausgeführt werden!

Hinweis

Die hervorgehobenen Zeilen (2, 10 und 11) müssen an die eigene Umgebung angepasst werden!

issuingCA/Install/01_IssuingCA_Post_Konfiguration.cmd
net stop certsvc
certutil -setreg CA\DSConfigDN "CN=Configuration,DC=ad,DC=intern"
certutil -setreg CA\ValidityPeriodUnits 5
certutil -setreg CA\ValidityPeriod "years"
certutil -setreg CA\AuditFilter 127
certutil -setreg CA\CRLPeriodUnits 3
certutil -setreg CA\CRLPeriod "days"
certutil -setreg CA\CRLDeltaPeriodUnits 12
certutil -setreg CA\CRLDeltaPeriod "hours"
certutil -setreg CA\CRLPublicationURLs "65:%WINDIR%\system32\CertSrv\CertEnroll\%%3%%8%%9.crl\n79:LDAP:///CN=%%7%%8,CN=%%2,CN=CDP,CN=Public Key Services,CN=Services,%%6%%10\n6:http://pki.ad.intern/cert/%%3%%8%%9.crl"
certutil -setreg CA\CACertPublicationURLs "1:%WINDIR%\system32\CertSrv\CertEnroll\%%1_%%3%%4.crt\n3:LDAP:///CN=%%7,CN=AIA,CN=Public Key Services,CN=Services,%%6%%11\n2:http://pki.ad.intern/cert/%%1_%%3%%4.crt"
net start certsvc

Nach der erfolgreichen Ausführung von allen Befehlen, müssen wir das vorhin erstelle Zertifikat in der Issuing CA hinterlegen. Dafür gehen wir wieder in die "certsrv.msc" und wählen die CER Datei aus "C:\issuingCA" aus:

PKI02 Zertifikatsimport

Zuletzt starten wir den Zertifikatsdienst:

PKI02 Dienst starten

Dieser Vorgang muss!! ohne Fehler durchlaufen. Wenn ja, dann läuft unsere CA nun.

Nun zum letzten Schritt.

Installation des IIS Webservers für die CRL und die Zertifikatsanforderung und -ausstellung

Sofern jetzt noch nicht erledigt, muss folgender DNS Eintrag angelegt werden, welcher auf die PKI02 zeigen muss:

  • pki.ad.intern (CNAME)

Nach der erfolgreichen Ausführung von allen Befehlen, müssen wir die Sperrliste der CA neu publishen. Dafür gehen wir wieder in die "certsrv.msc":

PKI01 Sperrliste Publishen

PKI01 Sperrliste Publishen 2

Nun liegt sowohl das Zertifikat der Issuing CA, sowie auch die CRL in dem Verzeichnis "C:\Windows\System32\CertSrv\CertEnroll". Wir kopieren beide Dateien in den am Anfang erstellen "issuingCA" Ordner. Zusätzlich kopieren wir die Root CA Files auch mit dort hinein:

issuingCA/Install/03_IssuingCA_copy.cmd
copy C:\Windows\System32\CertSrv\CertEnroll\* C:\issuingCA\
copy C:\rootCA\* C:\issuingCA\

Aufgabenplaner Job

Da diese Dateien regelmäßig erreichbar sein müssen, damit Clients diese Listen prüfen können, legen wir folgenden Job im Aufgabenplaner an:

PKI02 Aufgabenplaner Allgemein PKI02 Aufgabenplaner Allgemein PKI02 Aufgabenplaner Allgemein

IIS Installation und Konfiguration

Um diese Dateien jetzt erreichbar zu machen, installieren wir den IIS Webserver:

PKI02 IIS

Den Rest belassen wir auf Standard und klicken den Assistenten einfach nur durch.

Im Server-Manager starten wir die IIS Management Konsole:

PKI02 IIS Mgmt

Und in der IIS Konsole wird ein neues virtuelles Verzeichnis hinzugefügt:

PKI02 IIS Verzeichnis PKI02 IIS Verzeichnis Konfiguration

Hinweis

Hier muss der Pfad gewählt werden, wo die CRL liegt und der Name muss exakt übereinstimmen mit dem Namen aus dem Skript von oben Link

Im IIS erlauben wir jetzt nur noch einen Request Filter:

PKI02 IIS Filter PKI02 IIS Filter Konfiguration

Wenn alles richtig konfiguriert wurde, findet man in der MMC Konsole "pkiview.msc" jetzt die CA mit der Root CA und dürfte nirgendswo ein rotes X sehen.

CAWeb Installation

Im Server-Manager wird folgende Rolle installiert:

PKI02 CAWeb Rolle

Nach Installation wird der Einrichtungsassistent gestartet:

PKI02 CAWeb Ergebnis

Die CAWeb Rolle wird entsprechend konfiguriert:

PKI02 CAWeb User PKI02 CAWeb Dienste

Und folgendes Ergebnis kommt raus:

PKI02 CAWeb Ergebnis


Ergebnis

Nach erfolgreicher Installation findet man unter "http://pki.ad.intern/cert" alle Root, sowie Issuing CA Zertifikate und CRL's sowie unter "http://pki.ad.intern/CertSrv" die Webanwendung zum Ausstellen von Zertifikaten.