CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste

CodeSigning Zertifikate gibt es für verschiedene Zwecke. Jeder dieser Zwecke hat bestimmte Anforderungen, wie zum Beispiel die Klasse des Zertifikat (Klasse 1,2 oder 3), oder die Überprüfbarkeit. Manche CodeSigning Zertifikate müssen von Bestimmten Zertifizierungsstellen, zum Beispiel öffentlichen, ausgestellt sein, zum Beispiel Kernelmode-Treiber.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 17c0c8704dea4a67be0d794eed61f265 - 1

Eine Erklärung über die Unterschiede der verschiedenen Arten von Zertifizierungsstellen finden Sie im Artikel „Grundlegendes einer Zertifizierungsstellen (CA)„. Wenn ihnen eine Private Zertifizierungsstelle für Ihre Zwecke reicht, empfehle ich Ihnen einen Blick in die Artikel „Installation einer Zertifizierungsstelle unter Windows Server 2012R2 Teil 1 – Die Offline Root-CA“ und „Installation einer Zertifizierungsstelle unter Windows Server 2012R2 Teil 2 – Erstellen der unter geordneten CA„.

Prüfen Sie also vorher welche Anforderungen Ihr Verwendungszweck hat. Bei einer internen, also Privaten Zertifizierungsstelle ist zu beachten, dass diese auf den Systemen als Vertrauenswürdige Root-CA hinzugefügt werden muss. Klassische Beispiele für interne CodeSigning Verwendungen:

  • Signierung von internen PowerShell Skripten
  • Signierung von Anwendungen für AppLocker Windows Defender Applikation Control oder DeviceGuard
  • Signierung von Macros in Office Dokumenten
  • Signierung anderen Codes, zum Beispiel Visual Studio Projekte

Erstellen der Zertifikatsvorlage

Öffnen Sie die Konsole „Zertifizierungsstelle“ und machen Sie einen Klick mit der rechten Maustaste auf „Zertifikatsvorlagen“

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning1 - 2

Dadurch wird die Zertifikatvorlagenkonsole geöffnet.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning2 - 3

Wählen Sie die Vorlage „Codesignatur“ aus und machen einen rechten Mausklick und wählen „Vorlage duplizieren“

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning3 - 4

Im Reiter Kompatibilität wählen Sie bitte als Zertifizierungsstelle mindestens „Windows Server 2012“ entsprechend Ihrer CA. Als Zertifikatsempfänger wählen Sie bitte „Windows 8 / Windows Server 2012“. Wenn Sie noch Windows 7 haben, müssen dies entsprechend anpassen. Eventuell können Sie aber die Vorlage dann für bestimmte Zwecke nicht mehr nutzen.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning4 - 5

Wählen Sie im Reiter „Allgemein“ einen passenden Namen für Ihre Zertifikatsvorlage.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning5 - 6

Wechsen Sie in den Reiter „Anforderungsverarbeitung“ und aktivieren die Checkbox „Exportieren vom privaten Schlüssel zulassen“.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning6 - 7

Wechseln Sie auf den Reiter „Erweiterungen“ und Bearbeiten dort die Erweiterung „Basiseinschränkungen“

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning7 - 8

Aktivieren Sie die Erweiterung in dem Sie die Checkbox „Diese Erweiterung aktivieren“ auswählen. Und das Dialogfenster „Basiseinschränkungserweiterung bearbeiten“ mit OK schließen.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning8 - 9

Aus Sicherheitsgründen empfiehlt es sich, die Ausstellung auf dem Server genehmigen zu lassen. Wählen Sie dazu im Reiter „Ausstellungsvoraussetzungen“ die Option „Genehmigung von Zertifikatverwaltung der Zertifizierungsstelle“

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning9 - 10

Wechseln Sie in den Reiter „Antragstellername“ und setzten Sie die Option auf „Informationen werden in der Anforderung angegeben“

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning10 - 11

Wechseln Sie in den Reiter „Sicherheit“ und legen hier die Gruppe fest, die Zertifikate mit dieser Vorlage registrieren darf. Da es sich um sehr Kritische Zertifikate handelt, sollte diese Gruppe relativ klein sein. Es wäre auch eine Option das bestimmte Administratoren die Zertifikat für die entsprechenden Programmierer erzeugen und bereitstellen.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning11 - 12

Schließen Sie nun die das Dialogfenster „Eigenschaften der neuen Vorlage“ mit einem Klick auf OK.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning12 - 13

Schließen Sie nun die Zertifikatevorlagenkonsole und klicken mit der rechten Maustaste auf „Zertifikatvorlagen“ und wählen „Neu“ > „Auszustellende Zertifikatsvorlage“

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning13 - 14

Wählen Sie die erzeugte Zertifikatsvorlage.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning14 - 15

Nun können Sie entsprechende Zertifikate anfordern.

Anfordern von CodeSigning Zertifikaten

Um ein CodeSigning Zertifikat anzufordern, öffnen Sie die Zertifikate Verwaltung des entsprechenden Benutzers. Klicken Sie mit der rechten Maustaste auf „Eigene Zertifikate“ und wählen „Alle Aufgaben“ > „Neues Zertifikat anfordern…“

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning15 - 16

Klicken Sie im ersten Dialogfenster auf „Weiter“ und markieren im zweiten „Active Directory-Registrierungsrichtlinie“ bevor Sie erneut auf weiter klicken.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning16 - 17

Wählen Sie die eben Erzeugte Vorlage aus und klicken auf den Link „Es werden zusätzliche Informationen für diese Zertifikatsregistrierung benötigt. Klicken Sie hier, um die Einstellungen zu konfigurieren.“

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning17 - 18

Pflegen Sie den Antragssteller gemäß Ihren internen Vorgaben.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning18 - 19

Klicken Sie nun auf „Registrieren“

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning19 - 20

Nun ist das Zertifikat zur Registrierung eingereicht. Bei mir ist es so eingestellt, das CodeSigning Zertifikate vorher freigegeben werden müssen.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning20 - 21

Wechseln Sie zur Freigabe nun in die Zertifizierungsstellenkonsole. Unter „Ausstehende Anforderungen“ sollte nun der Request stehen. Stellen Sie diesen Request nun aus.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning21 - 22

Exportieren Sie das Zertifikat aus der Zertifizierungsstelle. Klicken Sie dazu doppelt auf das Zertifikat und wählen unter „Details“ de Option „In Datei kopieren…“

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning22 - 23

Importieren Sie das Zertifikat in wieder in der Konsole, in der Sie den Request erzeugt haben.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning23 - 24

Nun Erscheint das Zertifikat mit dem Privaten Schlüssel. Es empfiehlt sich das Zertifikat inklusive dem Privaten Schlüssel zur Datensicherung zu exportieren. Auch kann das Zertifikat so auf andere Systeme übertragen werden.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning24 - 25

Hinzufügen in die Vertrauten Herausgeber

Damit das Codesigning Zertifikat auch von den Systemen akzeptiert wird, sind 2 Schritte nötig.

  1. Der Client muss in der Lage sein das Zertifikat auf Gültigkeit zu Überprüfen. Das bedeutet die CA muss als Vertrauenswürdige Stammzertifizierungsstelle eingetragen sein.
  2. Dem Zertifikat muss als CodeSigning Zertifikat vertraut werden. Dazu muss es als „Vertrauenswürdiger Herausgeber“ eingetragen werden.

Beides lässt sich am besten über eine GPO erledigen.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning25 - 26

Testen mit der PowerShell

Auf dem Rechner mit dem Installierten Zertifikat einfach ein Test PowerShell-Skript anlegen. Ich nutze dafür eines, meiner Fertigen. Mit dem folgenden Befehl wird das CodeSigning Zertifikat bestimmt. Wenn es mehr wie eines gibt, muss es genauer Spezifiziert werden.

$SignCert = Get-ChildItem cert:\ -recurse -CodeSigningCert

Das Signieren ist ebenso einfach:

Set-AuthenticodeSignature .\invoke-GPupdateDomain_sign.ps1 $SignCert

Das Skript sollte nun Signiert sein, zur Überprüfung betrachten wie den Code. Am Ende vom Skript sollte sich nun ein Signaturblock befinden. Wichtig ist, wenn immer noch eine Warnmeldung erscheint, ist wahrscheinlich die entsprechende Zertifizierungsstelle nicht als Vertrauenswürdige Root-CA eingerichtet.

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning26 - 27

Wer ein Skript gerne Prüfen möchte, kann das mit dem Befehl:

Get-AuthenticodeSignature -FilePath .\invoke-GPupdateDomain_sign.ps1 -Verbose | fl
CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste - 021119 1914 CodeSigning27 - 28

Troubleshooting

Wenn ein Skript trotz neuer Signatur nach einer Änderung einen falschen Hash bei der Überprüfung meldet, kann es am Encoding liegen. Dies Problem hat mich schonmal ein paar Stunden beschäftigt. Das kann vor allem passieren, wenn Notepad++ zum Programmieren genutzt wird, aber nicht mit der Richtigen Codierung gespeichert wird. Ich empfehle immer den kostenlosen Power Shell ISE als PowerShell Editor zu verwenden.


Weitere Artikel zum Thema Active Directory Certificate Services