PKI – Zertifikate via Windows Batchskript importieren

Das Problem

Manchmal müssen auf Windows-Endgeräten schnell und einfach (selbst-signierte) Zertifikate verteilt werden. Eine Herausforderung insofern sich die Endanwender nicht mit den Besonderheiten von Zertifikaten und Windows auskennen. Zwar kann man dies Umgehen, indem man die Verteilung der Zertifikate mittels Gruppenrichtlinien (GPO) vornimmt. Allerdings steht dieses Mittel nicht immer zu Verfügung bzw. ist manchmal schwer praktikabel. Z.B. wenn keine bzw. nur eine temporäre eine Verbindung zur Windows-Domäne besteht. Ich habe daher nach einem Weg gesucht, die die Zertifikate einfach verschicken und mittels Skript unter Windows importieren zu können.

Lösung

Ich habe mir dazu ein kleines Batch Skript geschrieben. Dieses kann aus einer Verzeichnisstruktur Zertifikate für “vertrauenswürdige Herausgeber” (Trusted Publishers), “Zwischenzertifizierungsstellen” (Sub CAs) und “Vertrauenswürdige Stammzertifizierungsstellen” (Root CAs) für den kompletten lokalen Rechner oder für den jeweiligen User importieren, um eine PKI abzubilden. Der Endanwender muss dann nur noch das Skript entpacken und per Doppelklick ausführen. Die Zertifikate werden anschließend entweder für den lokalen Computer oder für den lokalen Benutzer (Variante des Skripts) im certstore installiert. Diese Lösung möchte ich Euch gerne zur Verfügung stellen.

Das Batch-Skript: (Download weiter unten)

:: PKI Script
:: target   Windows Clients and Servers starting from Windows XP and Server 2003 
:: src      Lars Mautsch. www.software-plattformen.de
:: context  admin

::Disclaimer
: The batch script is provided as is. Use it as your own risk. The author cannot be made liable for any damage/harm this script or miss-use of certificates/PKIs might cause.

@echo off
cd /d %~dp0

: root certificates
certutil -f  -addstore root root\yourcacertname.cer

: subca certificates
certutil -f  -addstore subca subca\yoursubcacertname.cer

: trusted publisher certificates
certutil -f  -addstore trustedpublisher trustedpublisher\yourcertname.cer

: wait for user to view result
pause

Download des ZIP-Archivs (inkl. Varianten)

Erläuterungen zum Skript und Anpassung für den eigenen Anwendungsfall:

  • ZIP-Archiv mittels 7-zip o.ä. auf den lokalen Rechner entpacken, bspw. in C:\wartung
  • Das eigentliche Skript befindet sich im root/Basisordner und trägt den Namen “add_certs_system.bat” . Die Variante für den einzelnen User: add_certs_user.bat
  • Die Zertifikate, die Ihr verteilen möchtet, werden in die jeweiligen Unterordnern platziert:
    • root: Für Vertrauenswürdige Stammzertifizierungsstellen – Root CAs
    • subca: Für Zwischenzertifizierungsstellen
    • trustedpublisher: Vertrauenswürdige Herausgeber (Trusted Publisher)
  • Anschließend die Dateinamen, der zu verteilenden Zertifikate im Skript anpassen, nicht benötigte Teile einfach mit “:” auskommentieren. Z. B. falls Ihr keine subca benötigt.
  • Zum Testen: Skript als Administrator ausführen: Rechtsklick auf das Skript – als Administrator ausführen.
  • Komplette Verzeichnisstruktur wieder packen (ZIP, …) und dann an Endanwender/Nutzer verteilen.

Viel Spaß & Erfolg damit! Wie immer erfolgt die Nutzung komplett auf eigene Gewähr. Ich schließe jegliche Haftung für entstandene Schäden, bspw. durch falsch verwendete, oder selbst-signierte Zertifikate, Tippfehler etc. komplett aus. Über Feedback und insb. Verbesserungsvorschläge freue ich mich sehr. Lasst diese doch gerne wieder der Allgemeinheit zukommen!

Windows Server 2019 RDS-Fehler: Der Remotedesktop-Lizenzierungsmodus ist nicht konfiguriert

Nach der Neuinstallation und erfolgreich durchlaufenen Aktivierung eines Remotedesktop- bzw. Terminalservers unter Windows Server 2019 bin ich auf das folgende Problem gestoßen: Es erscheint die Meldung: “Der Remotedesktop-Lizensierungsmodus ist nicht konfiguriert”. Zudem wir eine Grace-Period für die nachzuholende Aktivierung angezeigt, nach deren Ablauf die Remotedesktopservices den Betrieb einstellen bzw. keine Verbindung mehr annehmen.

Die Remotedesktoplizensierungs-Diagnose meldet ebenfalls zwei Fehler:
1. Der Lizenzierungsmodus für den Remotedesktop-Sitzungshostserver ist nicht konfiguriert.
2. Der Remotedesktop-Sitzungshostserver befindet sich innerhalb des Aktivierungszeitraums, aber der Remotedesktop-Sitzungshostserver ist nicht mit Lizenzservern konfiguriert”

Die Ursache für das Problem ist, dass der Server den Lizenzserver nicht findet, da dieser aus Sicht des Windows Servers nicht richtig konfiguriert ist. Um diese Konfiguration vorzunehmen gibt es zwei Möglichkeiten:

1. Konfiguration des Lizenzservers mittels einer Gruppenrichtlinie (GPO) . Gute Anleitungen dazu gibt es bspw. hier und hier. Diese Vorgehensweise ist insb. dann von Vorteil, wenn man mehrere Terminalserver konfigurieren will. Sie skaliert dann deutlich besser. Ich wollte allerdings für einen einzelnen, relativ isolierten Terminalserver nicht diesen Weg gehen. und habe die zweite Option gewählt, die

2. Manuelle Konfiguration mittels zweier relativ einfacher Schritte: a) Definieren des Lizenzservers mittels Powershell und b) setzen des Lizenzmodus mittels Registry. Die Schritte im Einzelnen:

a) Definieren des Lizensservers mittels Powershell

  1. Start -> powershell -> Rechs //Powershell als Administrator starten
  2. $obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
  3. $obj.GetSpecifiedLicenseServerList() //Auslesen der LIzenzserverliste
  4. $obj.SetSpecifiedLicenseServerList("FQDN des Terminalservers") //Bitte "FQDN des eigenen Lizenzservers für die Terminal Services eingetragen. Bspw. meinlizenzserver.meinedomaene.local
  5. $obj.GetSpecifiedLicenseServerList() //Auslesen der Lizenzserverliste und überprüfen, ob der FQDN richtig gesetzt ist.
  6. Die Powershell kann nun geschlossen werden.
Powershell. Die SpecifiedLSLIst darf anschließend nicht leer sein sondern sollte den FQDN des Lizenzservers enthalten.

b) Setzen des Lizenzierungsmodus in der Registry

  • Start -> Ausführen -> RegEdit //RegistryEditor Starten
  • Zum Pfad HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\Licensing Core navigieren.
  • Dort findet sich der DWORD Key: LicensingMode //falls der Schlüssel nicht existiert, dann diesen erstellen (DWORD).
  • Den Parameter der von 5 ändern. Entweder in
    • 2 - wenn die Lizenzierung per Device CAL erfolgen soll
    • 4 - wenn die Lizenzierung per User CAL erfolgen soll
LicenseMode REG_DWORD in der Registry

Nun muss noch der Terminalserver bzw. die Remotedesktopdienste neu gestartet werden und die Lizenzierungsprobleme sollten behoben sein. Denkt bitte daran, dass Ihr Euch ggf. vom Server ausschließen könnt, wenn Ihr per RDP verbunden seid und dann die Remotedesktopdienste neu startet. Denkt also an einen alternativen Weg, um auf den Server zuzugriefen (physischer Zugang, TeamViewer, etc.).

Viel Spaß bzw. Erfolg mit der Anleitung, die wie immer ohne Gewähr ist. Euer Feedback ist sehr willkommen und hilft bei der Verbesserung!

Windows Server 2016 – Windows Update Fehlercode 0x800705b4

Ich hatte in den letzten Monaten häufiger Probleme, die monatlichen Qualitätsrollups  unter Windows Server 2016 mit Hilfe der Windows Updates GUI in der Systemsteuerung zu installieren. So bereiteten bspw. die kumulativen Updates KB4284833 und KB4284880 wieder Probleme. Es scheitert nach langer Installationsdauer mit dem Windows Update Fehlercode 0x800705b4. Daher habe ich mich auf die Suche gemacht und in den Microsoft-Foren eine Möglichkeit gefunden, manuell die erfolgreiche Installation der entsprechenden Updates anzustoßen. Diese führt über das so genannte Server Konfigurationstool (Sconfig). Das Tool ist eigentlich für die Verwaltung und Konfiguration der abgespekten Windows Server Core-Installationen (ohne Windows GUI) gedacht ist. Es funktioniert auch bei den normalen Windows Server-Versionen hervorragend. Da es gängige Fehler in der Windows Update-Mechanik (Dienste, etc.) durch Neustarten und Löschen von Caches beseitigt, hilft es Windows Update-Probleme zu beseitigen.

Schritt-für-Schritt Anleitung, um mittel Sconfig Windows Updates ohne den Fehler 0x800705b4 durchzuführen:

  1. Vorbereitender Schritt: Windows Defender (Echtzeitschutz) für die nachfolgenden Schritte de-aktivieren. Ich habe gemerkt, dass dies die nachfolgenden Schritte spürbar beschleunigt.
  2. Start -> Ausführen
    • // Kommandozeile öffnen – Administratorrechte sollten für den aktuellen Benutzer vorhanden sein)
  3. Sconfig
  4. Im nun folgenden Dialog muss die Option 6 – “Updates herunterladen und installieren” ausgewählt werden:
  5. SConfig Tool, Auswahlmenü

    Auswahlmenü des Serverkonfigurationstools

  6. Anschließend wird abgefragt, ob alle verfügbaren Updates oder nur empfohlene Updates gesucht werden sollen. An dieser Stelle kann entweder A für “Alle” oder “E” für Empfohlene Updates ausgewählt werden.
    • // Ich habe mich im Folgenden immer für die Option “Alle” entschieden. Wird die andere Option (nur empfohlene Updates) gewählt, sehen die Screenshots minimal anders aus.
  7. Selektion der gewünschten Updates: Alle, oder nur die empfohlenen Updates

    Suche nach Updates. Optionen: Alle Updates suchen oder nur noch empfohlenen Updates suchen.

  8. Nun werden die verfügbaren Updates angezeigt. Bitte jetzt die gewünschten Updates auswählen: entweder “alle” zu installierenden Updates, “keine” oder “einzelne” Updates.
    • // Ich habe mich wieder für die Option “alle” entschieden. Siehe oben.
  9. Nun starten nacheinander das Herunterladen und anschließend die Installation der Updates.
    • // Dies kann je nach Auswahl einige Zeit in Anspruch nehmen. Bitte plant ausreichend Zeit ein.
  10. Herunterladen und anschließende Installation der Updates - bitte Zeit einplanen!

    Herunterladen und anschließende Installation der Updates – bitte Zeit einplanen!

  11. Die Installation sollte ohne den Fehlercode 0x800705b4 abgeschlossen werden.
  12. Windows Defender wieder aktivieren.

Wie immer gilt: Alle Angaben ohne Gewähr und Einsatz auf eigenes Risiko. Viel Erfolg beim Update Eures Windows 2016 Servers – hoffentlich ohne 0x800705b4 ;-). Feedback ist willkommen!

Update 05. Juli 2018: Auf Giga.de gibt es weitere Hilfestellungen, falls die o.g. Vorgehensweise das Problem nicht beseitigt.