Hallo und herzlich Willkommen zu diesem Tutorial. Dies ist der zweite Teil des 2-Tier PKI Deployments, in welchem ich dir zeige, wie du eine SubCA sowie einen Webserver für die CRL und Zertifikatverteilung konfigurieren kannst.
Vorbereitung
- Windows Server Installation (vorzugsweise WS 2022)
- Hostname unter Windows vergeben (PKI-SUBCASRV1)
- IP-Adresse vergeben & Domainjoin durchgeführt
- Offline RootCA mittels folgender Anleitung erstellt
Erstellen von Freigabeordner für CRL und Zertifikate
Im ersten Schritt wird ein neuer Ordner mit dem Namen CertEnroll unter C: erstellt. Im Anschluss muss der Ordner mittels Rechtsklick, Eigenschaften, erweiterte Freigabe freigegeben werden. Hier muss folgende Person eingetragen werden: Domäne\Zertifikatsherausgeber. Anschließend mittels OK bestätigen und auf den Reiter Sicherheit wechseln. Hier muss der entsprechende Nutzer ebenfalls hinzugefügt und mittels Vollzugriff berechtigt werden.
Installation IIS
Server-Manager starten, Rollen und Featurebasierte installation auswählen und Server bestätigen. Danach muss die Server Rolle “IIS” hinzugefügt werden. Anschließend kann die Featureinstallation bestätigt und durchgeführt werden.
Konfiguration IIS
Nun muss der kürzlich installierte IIS Server für die Nutzung konfiguriert werden. Hierfür wird der IIS Manager geöffnet. Anschließend muss die linkte Baumstruktur erweitert werden. Danach kann mittels Rechtsklick auf Default Web Site ein Virtuelles Verzeichnis hinzugefügt werden.
- Alias: CertEnroll
- Physischer Pfad: C:\CertEnroll
Die Konfiguration wird anschließend mit OK bestätigt. Im Anschluss wird die Option “Verzeichnis durchsuchen” im Reiter IIS durch doppelklicken geöffnet und die Funktion im Reiter rechts aktiviert.
Aktivieren von Doubleescaping
Um URLs mit z.B. einem +-Zeichen im Namen zu entwerten muss eine zusätzliche Konfiguration vorgenommen werden. Hierfür wird die CMD als Administrator gestartet. Nachfolgend muss in den Ordner inetsrv gewechselt und das Doubleescaping aktiviert werden. Im Anschluss wird der IIS Dienst neugestartet:
cd C:\Windows\System32\inetsrv appcmd set config "Default Web Site" /section:system.webServer/Security/requestFiltering -allowDoubleEscaping:True iisreset
Konfiguration DNS
Neben dem A-Record für PKI-SUBCASRV1.Domain.Endung wird auch ein CNAME Eintrag für pki.Domain.Endung erstellt. Diese URL verwenden wir unter anderem für die CRL Bereitstellung.
- Als Administrator am Domaincontroller anmelden.
- DNS-Manager starten
- Forward-Lookupzonen erweitern
- Domain.Endung mittels Rechtsklick auswählen und einen neuen Alias (CNAME) erstellen
- Name: pki
- FQDN: pki.Domain.Endung
- FQDN des Zielhosts: PKI-SUBCASRV1.Domain.Endung
Einspielen der RootCA
CMD als Administrator starten und folgende Befehle ausführen um die zuvor erstellte RootCA in die vertrauenswürdigen Stammzertifizierungsstellen zu importieren:
certutil -f -addstore root "C:\temp\PKI-ROOTCASRV1_PKI-RootCA.crt" certutil -f -addstore root "C:\temp\PKI-RootCA.crl"
Installation Active Directory Certificate Services (ADCS)
Nun muss die Serverrolle ADCS auf dem Server PKI-SUBCASRV1 installiert werden. 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 nächsten 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:
Danach kann der Installationstyp auf „Enterprise Zertifizierungsstelle“ umgestellt werden. Mit “Weiter” bestätigen. Als Zertifizierungsstellen-Typ muss „Untergeordnete Zertifizierungsstelle“ ausgewählt werden.
Danach muss ein neuer privater Schlüssel erstellt werden. Die Schlüssellänge wird auf 4096bit gestellt.
Im Anschluss muss ein Name für die Zertifizierungsstelle gewählt werden. Ich nehme hierfür „PKI-SubCA“ und bestätige die Einstellung mit Weiter. Da unsere RootCA offline, also nicht in der Domäne ist, muss die .req Datei anschließend gespeichert werden. Die Installationszusammenfassung wird mit „Konfigurieren“ bestätigt.
Anschließend muss die erstellte Datei unter C: zum Server PKI-ROOTCASRV1 nach C:\temp kopiert werden. Ich nutze hierfür die VMWare Remote Console und mounte einen USB Stick in die virtuelle Maschine (da die Maschine selbst keinen Netzwerkzugriff hat).
Zwischenzertifizierungsstellenzertifikat von RootCA signieren
Im nächsten Schritt muss das SubCA Zertifikat von unserer RootCA signiert werden. Dazu muss sich als Administrator am PKI-ROOTCASRV1 angemeldet werden. Im Anschluss kann folgender Befehl abgesetzt werden:
certreq -submit C:\Temp\erstelltereqdatei.req
Nun muss die Zertifizierungsstelle mittels “OK” bestätigt werden.
Jetzt kann die Zertifizierungsstelle geöffnet werden. In der linken Auflistung muss die Zertifizierungsstelle “PKI-RootCA” aufgeklappt werden. Im Anschluss muss auf den Reiter “Ausstehende Anforderungen” geklickt werden. Die Anforderung muss nun mittels Rechtsklick ausgewählt und im Menüpunkt “Alle Aufgaben” auf “Ausstellen” geklickt werden.
Die Anforderungs-ID muss notiert werden (hier ID 2). Im Anschluss kann das Fenster geschlossen und die CMD als Administrator gestartet werden. Hier muss folgender Befehl eingegeben werden, um das eben erstellte Zertifikat extrahieren zu können:
certreq -retrieve 2 C:\Temp\PKI-SUBCASRV1.DOMAIN.ENDUNG_DOMAIN-PKI-SUBCASRV1-CA.crt
Als Zertifizierungsstelle wird nachfolgend wieder PKI-RootCA (Kerberos) ausgewählt.
Nun muss die eben erstellte Datei C:\temp\PKI-SUBCASRV1.DOMAIN.ENDUNG_DOMAIN-PKI-SUBCASRV1-CA.crt zum Server PKI-SUBCASRV1 nach C:\temp kopiert werden. Im Anschluss kann der Server PKI-ROOTCASRV1 heruntergefahren werden.
Einpflegen der signierten SubCA
Jetzt muss die CMD auf dem PKI-SUBCASRV1 als Administrator gestartet werden. Mit dem folgenden Befehl werden alle Dateien von C:\temp nach C:\CertEnroll kopiert:
copy C:\Temp\*.cr* C:\CertEnroll\
Anschließend muss das eben signierte Zertifikat installiert werden:
certutil -installcert C:\temp\PKI-SUBCASRV1.DOMAIN.ENDUNG_DOMAIN-PKI-SUBCASRV1-CA.crt
Im Anschluss wird die Zertifizierungsstelle gestartet:
net start certsvc
Konfiguration Zertifizierungsstelle (CDP / AIA)
Im Servermanager muss unter „Tools“ das Programm Zertifizierungsstelle geöffnet werden. Im Anschluss werden die Eigenschaften der neu erstellten Zwischenzertifizierungsstelle 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>DeltaCRLAllowed>.crl ldap:///CN=<CATruncatedName><CRLNameSuffix>,CN=<ServerShortName>,CN=CDP,CN=Public Key Services,CN=Services,<ConfigurationContainer><CDPObjectClass> C:\CertEnroll\<CaName><CRLNameSuffix><DeltaCRLAllowed>.crl http://pki.DOMAIN.ENDUNG/CertEnroll/<CaName><CRLNameSuffix><DeltaCRLAllowed>.crl
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: Die in <> geschriebenen Variablen sollten nicht ersetzt werden.
Gibt den Standardpfad der im Server und der Serverrolle konfigurierten CRL an.
Gibt den Pfad der im Active Directory verankerten CRL an.
Gibt den selbst konfigurierten publizierten Ordner an.
Gibt einen in der Domäne öffentlich zugänglichen Webserver an.
Unter „Zugriff auf Stelleninformationen“ müssen folgende Einstellungen getroffen werden:
C:\Windows\system32\CertSrv\CertEnroll\<ServerDNSName>_<CaName><CertificateName>.crt ldap:///CN=<CATruncatedName>,CN=AIA,CN=Public Key Services,CN=Services,<ConfigurationContainer><CAObjectClass> http://pki.DOMAIN.ENDUNG/CertEnroll/<ServerDNSName>_<CaName><CertificateName>.crt
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 den Pfad der im Active Directory verankerten Zertifikate an.
Gibt einen in der Domäne öffentlich zugänglichen Webserver an.
Nun muss die Gültigkeitsdauer der CRL und den Zertifikaten konfiguriert werden. Hierfür wird wieder eine administrative CMD geöffnet. Es werden folgende Befehle eingetippt:
certutil.exe -setreg CA\CRLPeriodUnits 1 certutil.exe -setreg CA\CRLPeriod "Weeks" certutil.exe -setreg CA\CRLDeltaPeriodUnits 1 certutil.exe -setreg CA\CRLDeltaPeriod "Days" certutil.exe -setreg CA\CRLOverlapPeriodUnits 12 certutil.exe -setreg CA\CRLOverlapPeriod "Hours" certutil.exe -setreg CA\ValidityPeriodUnits 5 certutil.exe -setreg CA\ValidityPeriod "Years"
Die Werte sagen aus, dass die CRL spätestens innerhalb einer Woche und die ausgestellten Zertifikate innerhalb von 5 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
Schlusswort
Herzlichen Glückwunsch, der zweiten Schritt zu deiner eigenen 2-Tier PKI unter Windows ist geschafft. Nun kannst du mit dem erstellen von Zertifikaten starten. Im nächsten Tutorial zeige ich dir, wie du einen SCEP Server in Verbindung mit der 2-Tier PKI dazu verwendest, mittels Microsoft Intune automatisierte WLAN Zertifikate ausstellen zu lassen.