Codesignatur - Datei Signierung für mehr Sicherheit im Netzwerk

Die Dokumentation zeigt einen möglichen, einfachen und unkomplizierten Konfigurationsweg auf. 

Die Schritte beschreiben ein mögliches Vorgehen. Die Konfigurationen müssen jedoch ggf. auf die bestehenden Bedürfnisse und Standards des Unternehmens angepasst werden. 

Die Dokumentation beinhaltet folgende Schritte:

    • Bereitstellung der Zertifikatsvorlage
    • Anfordern des Codesignatur Zertifikates (Client System)
    • Konfiguration der Gruppenrichtlinien (als Beispiel für ein PowerShell Skript)
    • Applikation- bzw. Skript-Signierung auf Basis des DBLAN – IT-Operators


1. Allgemeine Informationen

Codesignatur (Code Signing) ist ein Prozess, bei dem digitale Signaturen verwendet werden, um die Integrität und Authentizität von Software oder Dateien zu überprüfen.

Es ermöglicht Benutzern, sicherzustellen, dass die heruntergeladene oder installierte Software tatsächlich von einem vertrauenswürdigen Entwickler stammt und nicht modifiziert wurde.


Bei der Codesignatur (Code Signing) wird der Code oder die Software mit einem digitalen Zertifikat signiert, welches von einer vertrauenswürdigen Zertifizierungsstelle (Certificate Authority, CA) ausgestellt wurde.

Das Zertifikat enthält den öffentlichen Schlüssel des Entwicklers und dient als Nachweis für die Authentizität der Signatur.


Wenn ein Benutzer eine signierte Datei oder Software öffnet oder installiert, prüft das Betriebssystem oder die Anwendungssoftware das digitale Zertifikat.

Dabei wird überprüft, ob das Zertifikat von einer vertrauenswürdigen CA ausgestellt wurde und ob die Signatur gültig ist. 

Wenn das Zertifikat vertrauenswürdig und die Signatur gültig ist, wird die Datei als authentisch und unverändert betrachtet.


Codesignatur (Code Signing) dient also dazu, das Vertrauen der Benutzer in heruntergeladene oder installierte Software zu stärken, indem die Integrität und Herkunft der Software überprüft wird.

Es schützt Benutzer vor dem Herunterladen oder Ausführen von bösartigen oder manipulierten Codes und stellt sicher, dass die Software von einem bekannten und vertrauenswürdigen Entwickler stammt.

1.1. Der Prozess

Der Prozess der Codesignatur (Code Signings) beinhaltet im Wesentlichen die Verwendung von digitalen Zertifikaten, die von einer vertrauenswürdigen Zertifizierungsstelle (Certificate Authority, CA) ausgestellt werden. ier sind die grundlegenden Schritte des Codesignatur-Prozesses benannt:

1. Erstellung des Softwarepakets: 
Ein Softwareentwickler erstellt die ausführbare Datei, den Treiber oder das Skript, die signiert werden soll. 
Dieser Code kann in verschiedenen Programmier- und Skriptsprachen wie PowerShell, C++, C# .NET, VB.Net, Java, Python usw. geschrieben sein.


2. Erstellung des Signaturschlüssels: 
Der Entwickler erzeugt ein kryptografisches Schlüsselpaar, bestehend aus einem privaten und einem öffentlichen Schlüssel. 
Der private Schlüssel wird geheim gehalten und dient zur Signierung des Codes, während der öffentliche Schlüssel zusammen mit der signierten Datei verteilt wird.


3. Erstellung des Zertifikatsantrags: 
Der Entwickler erstellt einen Zertifikatsantrag (Certificate Signing Request, CSR), der Informationen über den Entwickler, den öffentlichen Schlüssel und andere relevante Details enthält. 
Der CSR wird an eine Zertifizierungsstelle gesendet, die das Zertifikat ausstellt.


4. Überprüfung der Identität: 
Die Zertifizierungsstelle prüft die Identität des Antragstellers, um sicherzustellen, dass er tatsächlich der Entwickler ist, für den er sich ausgibt. 
Dies kann durch Überprüfung von Unternehmensdokumenten, Identitätsnachweisen oder anderen validen Verfahren erfolgen.


5. Ausstellung des Zertifikats: 
Wenn die Identität des Antragstellers überprüft wurde, erstellt die Zertifizierungsstelle das Codesignatur-Zertifikat. 
Das Zertifikat enthält den öffentlichen Schlüssel des Entwicklers sowie Informationen zur Zertifizierungsstelle selbst.


6. Signieren des Codes: 
Der Entwickler verwendet seinen privaten Schlüssel, um den Code digital zu signieren. 
Dies bedeutet, dass der Code mit einer kryptografischen Hash-Funktion verarbeitet wird. 
Der resultierende Hash-Wert wird mit dem privaten Schlüssel verschlüsselt. 
Dadurch entsteht eine digitale Signatur, die den Code eindeutig identifiziert.


7. Verteilung der signierten Datei: 
Der Entwickler verteilt die signierte Datei zusammen mit dem öffentlichen Schlüssel und dem Zertifikat.
Benutzer können nun die Signatur überprüfen, um sicherzustellen, dass die Datei nicht manipuliert wurde und vom angegebenen Entwickler stammt.


8. Signaturüberprüfung: 
Beim Herunterladen oder Installieren


2. Bereitstellung der Zertifikatsvorlage

Für die Bereitstellung der Zertifikatsvorlage wird vorausgesetzt, dass eine Active Directoy CA (Certification Authority) in der Domain installiert ist. 

Zusätzlich wird das Erstellen einer Active Directory Benutzergruppe (im Beispiel „GGS_Erlaube_Codesignatur-Zertifikate_Anfordern“) empfohlen. 

Diese Gruppe beinhaltet alle Benutzer, welche für das „Anfordern von Codesignatur-Zertifikaten“ zugelassen sind.


2.1. Erstellung der Zertifikatsvorlage

Auf dem Active Directoy CA über „mmc.exe“ die Verwaltungskonsole starten. 
Nachdem die Verwaltungskonsole gestartet wurde, bitte über Datei / Snap-In hinzufügen/entfernen durch Anklicken auswählen. 



Im Dialogfenster „Snap-In hinzufügen bzw. entfernen“ in der Listenauswahl „Verfügbare Snap-Ins“ die „Zertifikatvorlagen“ auswählen. 
Durch Drücken auf [Hinzufügen >] wird die Auswahl „Zertifikatvorlagen“ in die „Ausgewählte Snap-Ins“ Liste übertragen. 



Durch Drücken auf OK wird das Dialogfenster „Snap-In hinzufügen bzw. entfernen“ geschlossen. 


Zurück in der „Verwaltungskonsole“ den Ordner „Zertifikatvorlagen <Server FQDN>“ auswählen.

Rechts erscheinen alle zurzeit verfügbaren Zertifikatvorlagen. Bitte die Zertifikatvorlage „Code Signing“ auswählen. 
Anschließend über die rechte Maustaste das Kontextmenü starten und „Vorlage duplizieren“ auswählen.



Das Dialogfenster „Eigenschaften der neuen Vorlage“ wird gestartet. 
Auf der Registerkarte „Kompatibilität“ im Bereich Kompatibilitätseinstellungen bitte die Kompatibilität so hoch wie möglich einstellen (so sind die Funktionen des Zertifikats nicht eingeschränkt).


Folgende Felder wurden angepasst:

    • Zertifizierungsstelle: (Standard Windows Server 2003)
    • Zertifikatsempfänger: (Standard Windows XP / Server 2003)



In diesem zur Registerkarte „Allgemein“ wechseln. 


Folgende Felder wurden angepasst:

    • Vorlagenanzeigename:
    • Vorlagenname:
    • Gültigkeitsdauert: (Standard 1 Jahr)
    • Erneuerungszeitraum: (Standard 6 Wochen)



Auf der Registerkarte „Anforderungsverarbeitung“ kann das Exportieren des privaten Schlüssels erlaubt werden. 
Der Zweck muss „Signatur“ sein.



Auf der Registerkarte „Sicherheit“ die zuvor erstellte Benutzergruppe auswählen und entsprechend berechtigen.



Die Grundkonfiguration ist somit abgeschlossen und durch das Drücken auf die Schaltfläche [OK] wird das Dialogfenster „Eigenschaften der neuen Vorlage“ geschlossen.




Bei den Einstellungen handelt es sich um eine minimale Beispielkonfiguration. 
Diese muss unbedingt an die eigenen Umgebungsstandards angepasst werden. 



Zurück in der „Verwaltungskonsole“ im Ordner „Zertifikatvorlagen <Server FQDN>“ ist die neu erstellte Zertifikatvorlage sichtbar.



Diese Verwaltungskonsole kann ohne separat gespeichert einfach geschlossen werden.


2.2. Bereitstellung der Zertifikatsvorlage

Durch Ausführen der Applikation „certsrv.msc“ wird die Verwaltungskonsole „certsrv - Zertifizierungsstelle“ gestartet. 
Nachdem die Verwaltungskonsole gestartet ist, bitte unter <CA-Name> zu dem Ordner „Zertifikatvorlagen“ navigieren.

Durch Anklicken der rechten Maustaste auf dem „Zertifikatvorlagen“ Ordner wird das Kontextmenü angezeigt. 
Im Kontextmenü den Punkt Neu / Auszustellende Zertifikatvorlage auswählen



Das Dialogfenster „Zertifikatvorlagen aktivieren“ wird angezeigt. 
In der Auswalliste die zuvor erstellte Zertifikatvorlage auswählen und die Auswahl durch das Drücken der Schaltfläche [OK] bestätigen.



Zurück in der „Verwaltungskonsole“ ist im Ordner „certsrv – Zertifizierungsstelle“ die hinzugefügte Zertifikatvorlage sichtbar.



3. Anfordern des Codesignatur Zertifikates (Client System)

Durch Ausführen der Applikation „certmgr.msc“ wird die Verwaltungskonsole „certmgr – [Zertifikate – Aktueller Benutzer]“ gestartet. 
Nachdem die Verwaltungskonsole gestartet ist, bitte unter Zertifikate – Aktueller Benutzer / Eigene Zertifikate zu dem Ordner „Zertifikate“ navigieren.


Durch Anklicken der rechten Maustaste auf dem „Zertifikate“ Ordner wird das Kontextmenü angezeigt. 
Im Kontextmenü den Punkt Alle Aufgaben / Neues Zertifikat anfordern… auswählen.



Der Zertifikatregistrierungs-Assistent wird gestartet. 
Die Seite „Vorbereitung“ durch Drücken der Schaltfläche [Weiter] verlassen. 



Die Seite „Zertifikatregistrierungsrichtlinie auswählen“ durch Drücken der Schaltfläche [Weiter] verlassen. 



Auf der Seite „Zertifikate anfordern“ die zuvor erstellte Zertifikatsvorlage auswählen und die Auswahl durch Drücken auf [Registrieren] bestätigen 



Das Zertifikat wurde erstellt. Durch das Drücken der Schaltfläche [Fertig stellen], wird der Zertifikatregistrierungs-Assistent beendet.



Zurück in der Verwaltungskonsole „certmgr – [Zertifikate]“ bitte das erstellte Zertifikat auswählen. 


Durch Klicken der rechten Maustaste auf dem erstellten Zertifikat, wird das Kontextmenü angezeigt. 
Im Kontextmenü „Eigenschaften“ auswählen.



In „Eigenschaften von <Zertifikatname>“ bei Bedarf die Felder „Anzeigename“ und „Beschreibung“ ausfüllen. 





Werden mehrere Zertifikate in dieser Form erstellt, so wird dringend empfohlen, die Felder „Anzeigename“ und „Beschreibung“ entsprechend auszufüllen.



3.1. Export des erstellten Zertifikates für die Gruppenrichtlinien

In der Verwaltungskonsole „certmgr – [Zertifikate]“ bitte das erstellt Zertifikat auswählen.

Durch Anklicken der rechten Maustaste auf das erstellte Zertifikat, wird das Kontextmenü angezeigt. 

Im Kontextmenü Alle Aufgaben / Exportieren… auswählen.



Der Zertifikatexport-Assistent wird gestartet. Die „Willkommen“ Seite durch Drücken der Schaltfläche [Weiter] verlassen.



Die Seite „Privaten Schlüssel exportieren“ durch Drücken der Schaltfläche [Weiter] verlassen.



Der Private Schlüssel wird nicht benötigt. 
Sollte die Option „Ja. Privaten Schlüssel exportieren“ aktiv sein, dann sollte diese trotzdem nicht verwendet werden.




Die Seite „Format der zu exportierenden Datei“ durch Drücken der Schaltfläche [Weiter] verlassen.



Auf der Seite „Zu exportierende Datei“ durch Drücken der Schaltfläche [Durchsuchen] einen Speicherort auswählen und den Zertifikat-Export-Dateinamen eingeben. 
Die Eingabe durch Drücken der Schaltfläche [Weiter] bestätigen



Das Zertifikat wurde exportiert. 
Der Zertifikatexport-Assistent kann durch Drücken der Schaltfläche [Fertig stellen] beendet werden.



Eine weitere Meldung informiert über den Status des Exports. 
Diese kann durch Drücken auf [OK] geschlossen werden.




Bitte das exportierte Zertifikat (C:\Temp\PowerShell\Damian_Brausch_Codesignatur.cer) auf ein Domain Controller übertragen.



4. Konfiguration der Gruppenrichtlinien (als Beispiel für ein PowerShell Skript)

Durch Ausführen der Applikation „gpmc.msc“ wird die Verwaltungskonsole „Gruppenrichtlinienverwaltung“ gestartet. 

Nachdem die Verwaltungskonsole gestartet ist, bitte zu Gruppenrichtlinienverwaltung / Gesamtstruktur: <Domainname> / Domänen / <Domainname> / Gruppenrichtlinienobjekte navigieren.

Durch Anklicken der rechten Maustaste auf den Ordner „Gruppenrichtlinienobjekte“, wird das Kontextmenü angezeigt. Im Kontextmenü „Neu“ auswählen.



Im Dialog Fenster „Neues Gruppenrichtlinienobjekt“ den Gruppenrichtlinien Namen eingeben. 
(Im Beispiel COMP_Codesignatur) und durch Drücken der Schaltfläche [OK] die Eingabe bestätigen.



Die erstellte Gruppenrichtlinie erscheint unterhalb des „Gruppenrichtlinienobjekte“ Ordners.

Durch Anklicken der rechten Maustaste auf die zuvor erstellte Gruppenrichtlinie, wird das Kontextmenü angezeigt. Im Kontextmenü „Bearbeiten…“ auswählen.



4.1. Import des erstellten Zertifikats in die Gruppenrichtlinie

Im Dialogfenster „Gruppenrichtlinienverwaltungs-Editor“ in der Ordnerstruktur zu Computerkonfiguration / Richtlinien / Windows-Einstellungen / Sicherheitseinstellungen / Richtlinien für öffentliche Schlüssel / Vertrauenswürdige Herausgeber navigieren. 

Durch Anklicken der rechten Maustaste auf den Ordner „Vertrauenswürdige Herausgeber“, wird das Kontextmenü angezeigt. Im Kontextmenü „Importieren…“ auswählen.



Der „Zertifikatimport-Assistent“ wird gestartet. Die „Willkommen“ Seite kann durch Drücken der Schaltfläche [Weiter] verlassen werden. 



Auf der Seite „Zu importierende Datei“ durch die Schaltfläche [Durchsuchen] zu der zuvor unter Punkt 3.1 exportierten Zertifikatsdatei navigieren. 

Die Auswahl durch Drücken der Schaltfläche [Weiter] bestätigen.



Die Seite „Zertifikatsspeicher“ kann durch Drücken der Schaltfläche [Weiter] verlassen werden.



Durch Drücken auf die Schaltfläche [Fertig stellen] wird der Importvorgang gestartet.



Nach einer geraumen Zeit erscheint eine Zertifikatimport-Assistenten-Meldung. Diese informiert über den Importstatus. Diese kann durch Drücken der Schaltfläche [OK] beendet werden.



4.2. Konfiguration der „Skriptausführung-Richtlinie“

Im Dialogfenster „Gruppenrichtlinienverwaltungs-Editor“ in der Ordnerstruktur zu Computerkonfiguration / Richtlinien / Administrative Vorlagen: / Windows-Komponenten / Windows PowerShell navigieren. 

Im rechten Dialogfenster die Richtlinie „Skriptausführung aktivieren“ doppelt anklicken.



In den Richtlinien Eigenschaften der „Skriptausführung aktivieren“ die folgenden Optionen konfigurieren, „Aktiviert“ auswählen und in der Dropdownliste Ausführungsrichtlinie „Nur signierte Skripte zulassen“ auswählen. 
Die Konfiguration durch Drücken der Schaltfläche [OK] bestätigen und die Richtlinien Eigenschaften schliessen.



Das Dialogfenster „Gruppenrichtlinienverwaltungs-Editor“ kann nun auch geschlossen werden.


4.3. Gruppenrichtlinie verknüpfen

Die erstellte Gruppenrichtlinie wird nun auf eine OU verknüpft, in welcher sich die Computersysteme befinden. Da es sich um eine Computerrichtlinie handelt. 


5. Applikation- bzw. Skript-Signierung auf Basis des DBLAN – IT-Operators

Als Vorbereitung wurde unter „C:\Temp\PowerShell“ ein PowerShell Skript „CertTest.ps1“ erstellt.



Das Skript ist nicht signiert. Wird dieses nun ausgeführt, so erscheint eine entsprechende Fehlermeldung.



Bitte den DBLAN – IT-Operator starten und über Menü „Werkzeuge“ im Bereich „Datei Verwaltung“ das Werkzeug „Datei Signieren“ starten.




Eine 30-tägige unbeschränkte Version des DBLAN – IT-Operators kann unter https://www.dblan.eu/software-solutions/it-operator/ heruntergeladen werden.



Im Dialogfenster „Datei Signieren“ über die Schaltfläche   die zu signierende PowerShell Datei auswählen (1). 
Diese wird dann unter „Dateiname:“ (2) angezeigt.

Unter „Zertifikate:“ im Auswahlmenü das entsprechende Zertifikat auswählen (3). 
Die Eigenschaften des ausgewählten Zertifikates werden angezeigt (4). 
Durch Drücken der Schaltfläche [Datei signieren] (5) wird die PowerShell Datei signiert. 
Das Ergebnis wird in Ausgabe (6) angezeigt.



Die Datei ist signiert und kann nun verwendet werden.



5.1. Fehlermeldung

Sollte eine Fehlermeldung erscheinen, dann kann dies mehrere Ursachen haben. Unter anderem:

    • In die Gruppenrichtlinie wurde eine falsche Zertifikatsdatei importiert.
    • Die Gruppenrichtlinie ist nicht auf der OU verknüpft, in welcher sich dieses Clientsystem befindet.
    • Die Gruppenrichtlinie ist noch nicht auf dem Clientsystem aktiv. (Replikationsverzögerung)