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 CBS Log Datei wächst „unaufhaltsam“: CBS.log Dateien löschen und freien Speicherplatz schaffen

Das Problem

Unter verschiedenen Windows-Versionen, wie bspw. Windows 8, Windows 10 oder Windows 11 wächst die Datei „CBS.log“ im Log-Ordner von Windows ungebremst (also in: %WINDIR%\log\CBS – z.B. C:\WINDOWS\log\CBS ). Mich hat das Problem unvorbereitet überrascht und mein System-Laufwerk C: und die CBS.log sind aufgrund eines fehlgeschlagenen Windows-Updates voll gelaufen und hatten keinen freien Speicherplatz mehr. Mehr zum spezifischen Problem und der Ursachenbehebung mit Windows Update und CBS.logs findet ihr weiter unten im Text sowie unter diesen beiden Quellen: hier und hier.

Man muss jedoch, um weiterzukommen erst einmal die Datei CBS.log löschen. Denn man braucht erst einmal wieder Speicherplatz auf dem Systemlaufwerk.

chip.ch hat auf seiner zwei Tipps veröffentlicht, um die CBS.log zu löschen. Die untenstehende Anleitung baut hauptsächlich auf dieser Quelle auf.

Variante 1: Löschen der CBS-Dateien über die Windows Systemsteuerung (Datenträgerbereinigung)

Hinweis: Bei den verschiedenen Windows Versionen sind die Schritt ggf. minimal unterschiedlich. Beispielswiese gibt es bei Windows 10 weniger Schritte. Das grundlegende Vorgehen ist jedoch ähnlich. Lasst Euch davon nicht abschrecken!

  • Datenträgerbereinigung starten: Drückt die Windows-Taste und gebt in die Suchleiste von Windows den Begriff „Datenträger“ ein. Klickt anschließend auf die „Datenträgerbereinigung„. Auf Englisch: „Disk Cleanup Tool“
  • Wählt im nächsten Schritt Eure Windows-Systemfestplatte aus aus und bestätigt mit „OK“. In der Regel wird die Systemfestplatte das Laufwerk C: sein.
  • Anschließend wird die Festplatte wird nach zu löschenden Dateien und Ordnern durchsucht. Wartet nun ein paar Minuten, bis der Vorgang abgeschlossen ist. Der Vorgang kann je nach Systemstatus einige Zeit in Anspruch nehmen. Bitte nicht ungeduldig werden und diesen Vorgang abbrechen. Denn ansonsten müsst Ihr den Vorgang erneut starten und verbraucht noch mehr Zeit.
  • Klickt dann auf „Systemdateien bereinigen“ / Englisch: „Clean up system files“. Siehe Screenshot. Im Dialog wählt Ihr abermals die Windows-Festplatte aus. Wartet auch hier. bis diese Überprüfung abgeschlossen ist.
  • Markiert nun alle Dateien, die Ihr löschen möchtet. Insbesondere die Dateien „vom Windows System generierte Windows-Fehlerbericht“ bzw. Englisch: „System created Windows Error Reporting“ sowie die Temporären Dateien / Temporary Files sollten ausgewählt werden. Denn hierunter verstecken sich u.a. die CBS-Logdateien. Bestätigt die Auswahl mit OK.
  • Nach dem erfolgreichen Löschvorgang wird das Programm automatisch geschlossen und die CBS-Logdateien sollten verschwunden sein.

Variante 2: Manuelles Löschen der CBS-Dateien im Ordner

  • Öffnet den Windows-Explorer. Der Shortcut dafür: Windows Taste + E drücken. Wählt nun die Systemfestplatte aus. Dies wird bei den meisten Windows-Installationen das Laufwerk C: sein.
  • Navigiert nun im Systemlaufwerk zum Ordner „Windows“ und in die Unterordner „Log“ und darin den Unterordner „CBS“
  • Markiert alle Dateien und Unterordner (Shortcut: STRG + A) und drückt die Taste [Entf] bzw. [Del] auf der Tastatur, um diese zu löschen.
  • Wichtiger Hinweis: Sollte die Fehlermeldung auftauchen, dass das Löschen bestimmter Dateien nicht möglich ist, da tinstaller bzw. der TrustedInstaller von Windows Update noch Zugriff auf diese hat, so müssen zugehörige Prozesse via taskmanager beendet werden. Bzw. muss der Dienst TrustedInstaller beendet werden. Das Beenden des Dienstes gelingt via: Start -> Ausführen -> services.msc und Auswählen des entsprechenden Dienstes +Rechtsklick und „Neu starten“. Manchmal ist ein Neustart des Rechners notwendig, um Windows wirklich zum Löschen der Datei zu überreden. Denn dann wurde der Trusted Installer bzw. Windows Update Dienst sauber neu gestartet. Siehe hierzu auch dieser Foreneintrag
  • Die Dateien und Ordner werden vom System automatisch wieder erstellt.
  • Beobachtet daher regelmäßig diesen Ordner, um Dateien und Ordner zu löschen und Speicherplatz freigeben zu können.

Hintergründe zum Amoklauf von Windows und den durch die CBS.log voll „gemüllten“ Datenträger (Quelle giga.de)

Auslöser für dieses Fehlverhalten ist ein altbekannter Windows-Bug:

  • Das Windows Betriebssystem speichert die sogenannten Component Based Servicing (CBS)-Logdateien im Ordner C:\Windows\Logs\CBS.
  • Wenn die derzeitige Datei CBS.log eine bestimmte Größe erreicht, benennt Windows in der Regel die Datei um. Dies erfolgt gemäß dem Schema CbsPersist_YYYYMMDDHHMMSS.log. Hierbei stehen Y für Jahre, M für Monate usw.
  • Gelingt dies, versucht Windows die umbenannte Datei zu komprimieren, um Speicherplatz zu sparen. Ähnlich einem Logrotate unter Linux-artigen Betriebssystemen.
  • Allerdings schlägt dieser Vorgang manchmal aus unterschiedlichen Gründen fehl. Beispielsweise tritt ein Fehler auf, wenn die Datei bereits eine Größe von zwei GB erreicht hat. Oder es existieren Probleme mit dem Betriebssystem oder insbesondere dem Dateisystem. Auch besteht die Möglichkeit, dass ein Windows-Update dauerhaft fehlt schlägt.
  • Während des Komprimierungsversuchs werden allerdings mehrere 100 MB im Ordner C:\Windows\Windows\Temp belegt. Und leider nicht gelöscht… somit ist dieser Speicherplatz voll gemüllt.
  • Der Vorgang kann sich alle 20 Minuten wiederholen, wodurch irgendwann die Festplatte voll läuft, da die Dateien nicht gelöscht werden, und kein Speicherplatz mehr verfügbar ist.

Ursachenbeseitigung

Wie zuvor bereits angedeutet, ist die Ursache für das Verhalten oftmals ein Problem im Betriebssystem bzw. des Filesystems. Diese können unterschiedlichste Ursachen haben. Allerdings empfiehlt es sich in diesem Fall oftmals, zunächst eine Überprüfung des Systems mit dem Systemdatei-Überprüfungsprogramm (SFC) vorzunehmen. SFC überprüft alle geschützten Systemdateien und ersetzt die beschädigten Dateien durch eine zwischengespeicherte Kopie. Waren diese korrupten Dateien die Ursache für das Problem der großen CBS-Dateien, so ist dieses anschließend verschwunden. Ich habe erlebt, dass in einem großen Anteil der Fälle, damit das Problem langfristig behoben ist. So weit so gut… Wie müsst Ihr dazu vorgehen?

  • Startet zunächst am besten das Windowssystem neu. Herunterfahren und Euer System anschalten. und hochfahren. Also nicht nur „Neu Starten“ wählen, richtig herunterfahren.
  • Nach dem Neustart SFC starten. Dazu die Eingabeaufforderung mit Administratorenrechten starten. Auf Start klicken bzw. Windows-Taste drücken und „cmd“ eingeben, Rechtsklick auf „Eingabeaufforderung“ und dann Linksklick auf „Als Administrator ausführen“. Anschließend bestätigen.
  • In der sich nun öffnenden Eingabeaufforderung den folgenden Befehl eingeben: sfc /scannow . Siehe Screenshot unten.
  • Der Vorgang kann nun einige Zeit andauern.
Screenshot sfc Scannow
Ausführen des Befehls sfc /scannow in der Eingabeaufforderung mit Administratorrechten
  • Nachdem das System gescannt und ggf. repariert wurde, erscheint eine Meldung in der nachfolgenden Form: „Überprüfung abgeschlossen. Der Windows-Ressourcenschutz hat hat beschädigte Dateien gefunden und erfolgreich repariert. […].“ Die Änderungen stehen dann interessanterweise wieder in der CBS.log, deren Wachstum der Grund für den Artiekl ist… 🙂
  • Die Eingabeaufforderung schließen. Dazu einfach den Befehl „exit“ eingeben.
  • Zuletzt das System neu starten. Damit sollte das Problem inkl. der Ursachen hoffentlich der Vergangenheit angehören.

Wie immer gilt: Alle Angaben ohne Gewähr und Einsatz auf eigenes Risiko. Viel Spaß & viel Erfolg! Ich freue mich über mögliches Feedback in den Kommentaren oder via E-Mail o.ä.

Downgrade von Windows 8.1 Enterprise auf Professional-Version

Nachdem bestehende Windows 8 bzw. 8.1-Enterprise User beim Update auf die neue Windows 10-Version zunächst in die Röhre schauen werden, habe ich mich auf die Suche nach Optionen zum Downgrade meiner Enterprise-Version auf eine Prof. Version begeben. Wichtig: Ich habe dafür ebenfalls eine Lizenz – diese ist zwingend notwendig, um nicht in Lizenzproblematiken zu gelangen. Bei der Suche nach entsprechenden Hinweisen zum Downgrade bin ich auf die nachfolgende Anleitung gestoßen:

http://www.windows-8-futter.de/enterprise/downgrade.html

In der Anleitung werden verschiedene Methoden zum Downgrade, ausgehend von der Änderung von Registrierungsschlüsseln hin zu „Drüberinstallieren“ genannt. Ganz einfach bzw. aufwandsarm ist der Vorgang nicht immer, aber vielleicht ist die Anleitung für den ein oder anderen doch ganz nützlich. Bei mir hat bereits die „Registry-Variante“ geklappt. Dazu musste ich mehrere Registrierungsschlüssel ändern und das System neustarten:

  • [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
    „EditionID“=“Enterprise“
    „ProductName“=“Windows 8 Enterprise“ in
    [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
    „EditionID“=“Professional“
    „ProductName“=“Windows 8 Professional“

und die gleichen Schlüssel (bei mir, andere benötigten lt. Foren die weitere Änderung nicht) in:

  • [HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion]

Update 19.09.2015: Ich hatte an einem Rechner im Bekanntenkreis das Problem, dass das Update trotzdem nicht anzeigt wurde. Hier musste ich bei der obenstehenden Anleitung verlinkten bei der Variante der Registry-Änderung den Namen „Windows 8.1 Professional“ anstatt „Windows 8.1 Pro“ setzen müssen. Nach einem Neustart musste ich zudem die Inhalte des Ordners C:\Windows\SoftwareDistribution\Download löschen sowie in der Eingabeaufforderung mit Administratorenrechten „wuauclt.exe /updatenow“ ausführen, bevor das Windows 10-Update bei Windows-Update erschienen ist. Vielleicht hilft das dem einen oder anderen…

Windows und Office Product Keys auslesen

Wer kennt das nicht: Man möchte Office oder Windows von einem bestehenden Rechner auf einen neuen Rechner übernehmen. Findet aber trotz gültiger Lizenz (diese muss vorhanden sein!) den Product Key nicht…

Update 30.09.2015: Ein weiterer Anwendungsfall für das Auslesen des Installationsschlüssels ist das Upgrade von Windows 7/8/8.1 auf Windows 10. Hier erhält man als Benutzer, zumindest derzeit, den neuen Schlüssel für Windows 10 nicht angezeigt und kann mit dem bestehenden/alten Windows 7/8-Key keine komplette Neuinstallation (ohne Dateileichen, …) durchführen. Um eine komplette Neuinstallation zu ermöglichen, kann man aber ebenfalls den unten stehenden Tipp bzw. das genannte Tool anwenden…

Hier hilft das Tool Nirsoft ProduKey weiter, welches es erlaubt Produktschlüssel von Windows oder Office auszulesen. Dieses gibt es auf der Seite des Herstellers zum Download.

Natürlich sollte man nicht vergessen, auch Office bzw. Windows von dem Ursprungsrechner zu deinstallieren, um an dieser Stelle nicht in lizenzrechtliche Probleme zu kommen!

Windows 8 bzw. Windows 10 Fehler: Fehler beim Planen des Softwareschutzdiensts für den erneuten Start bei ****-** Fehlercode: 0x80041316.

Nachdem ich bei mehreren Windows 8, Windows 8.1 und Windows 10-Installationen im Eventlog auf die Fehlermeldung aus der Überschrift gestoßen bin, wollte ich sie nicht mehr länger ignorieren… 😉

Im MSFN (http://www.msfn.org/board/topic/159772-sercurity-spp-event-16385-error-code-0x80041316/page__p__1023235#entry1023235 ) bin ich auf der Suche nach der Ursache für die Fehlermeldung fündig geworden: Einige Tasks bzw. geplante Aufgaben aus den „geplanten Aufgaben“ sind in diesem Fall anscheinend defekt. Die Tasks können z. B. bei Datenträgerdefekten bzw. Fehlern, unsauberen Shutdowns o.ä beschädigt werden. Anschließend können dann die entsprechenden Meldungen (0x80041316, …) im Eventlog auftreten.

Fehlerbehebung (Könnte leider kürzer sein):

Voraussetzungen:

  • Man benötigt eine Windows 8-Installations-CD bzw. den Installationsdatenträger/ISO/… genauer gesagt die Datei install.wim im Unterordner sources. Dazu später aber mehr. Ohne die Datei braucht man allerdings auch nicht anfangen… 😉
  • 7-ZIP (kostenlos) in einer Version neuer als 9.3X zum Extrahieren der Installationsdateien – mit älteren Versionen hatte ich leider kein Glück. Folgende Anleitung kann helfen, die für Eure Version richtige Version von Installationsdateien zu extrahieren: http://blog.nirsoft.net/2009/09/17/how-to-extract-missing-system-files-from-the-dvd-of-windows-7vista/

Vorgehen zur Fehlerbeheben:

  • Defekte Tasks (geplante Aufgaben) lokalisieren: Verwaltung -> Computerverwaltung -> Aufgabenplanung -> Nun kommen Fehlermeldungen, welche Tasks defekt sind. Diese Tasks notieren.
  • Nun im Systemordner Windows\System32\tasks (meistens auf C:) des Rechners schauen und die genannten defekten Dateien lokalisieren (inkl. entsprechendem Unterordner – in meinem Fall C:\windows\System32\Tasks\Microsoft\Windows\SoftwareProtectionPlatform , C:\Windows\System32\Tasks\Microsoft\Windows\WS und C:\windows\System32\Tasks\Microsoft\Windows\User Profile Service) und löschen.
  • Windows 8 neustarten -> Die Fehlermeldung sollte erst einmal nicht mehr in der Aufgabenplanung auftauchen.
  • Wichtig: Nun müssen die Tasks/Aufgaben allerdings wieder neu eingerichtet werden und dafür benötigt man ein Windows 8-Installationsmedium dessen Windows Version mit der installierten Version übereinstimmt. Also bei einer installierten Windows 8-Prof. Version ein Windows 8-Prof. Installationsmedium.
  • Auf dem Installationsmedium muss man nun die Datei install.wim lokalisieren. Entpackt man diese, finden sich im Ordner \System32\tasks die Taskdateien, welche man zuvor gelöscht hat.
  • Nun die Dateien für die Tasks, welche gelöscht wurden auf den Desktop/Rechner kopieren und die Dateiendung .xml bei den jeweiligen Dateien ergänzen, damit diese später importiert werden können. Wichtig: Ohne Änderung der Dateiendung wird die Fehlerbehebung nicht klappen.
  • Diese umbenannten Dateien muss man nun in der Aufgabenplanung wieder importieren: Die Ordnerstruktur in der Aufgabenplanung ist ähnlich der Struktur im Windows/System32-Ordner. Hier den Ordner lokalisieren, aus dem man vorher die Datei gelöscht hat, Rechtsklick auf „Aufgabe importieren“, die zuvor kopierten Datei wählen, Standardeinstellungen behalten und importieren. Dies für alle defekten Dateien/Tasks wiederholen.
  • Anschließend neu starten und die Probleme sollten behoben sein.
  • Hinweise:
  • In den Foren wird teilweise auch davon gesprochen, dem System nach jedem Importvorgang einer Task-Datei einen Neustart durchzuführen. Dieser war bei mir nicht nötig. Vielleicht ist dieser Neustart aber bei Euch notwendig.
  • Bei einem Fehler(code): „Fehler beim Planen des Softwareschutzdiensts für den erneuten Start bei ****-**-**. Fehlercode: 0x80070002“ hat der Import einer Dateien nicht richtig funktioniert und sollte nochmal sauber wiederholt werden.

Viel Spaß bei der Fehlerbehebung! Feedback zu diesem Beitrag (Unklarheiten, Fehler, …) ist wie immer willkommen und werden sehr gerne eingepflegt!