A screenshot of a social media post

CodeSigning Zertifikate mit Windows Server 2019 Zertifikatsdienste

17c0c8704dea4a67be0d794eed61f265

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.

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“

021119 1914 CodeSigning1

Dadurch wird die Zertifikatvorlagenkonsole geöffnet.

021119 1914 CodeSigning2

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

021119 1914 CodeSigning3

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.

021119 1914 CodeSigning4

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

021119 1914 CodeSigning5

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

021119 1914 CodeSigning6

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

Werbung
021119 1914 CodeSigning7

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

021119 1914 CodeSigning8

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“

021119 1914 CodeSigning9

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

021119 1914 CodeSigning10

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.

021119 1914 CodeSigning11

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

021119 1914 CodeSigning12

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

021119 1914 CodeSigning13

Wählen Sie die erzeugte Zertifikatsvorlage.

021119 1914 CodeSigning14

Nun können Sie entsprechende Zertifikate anfordern.

Werbung

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…“

021119 1914 CodeSigning15

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

Werbung
021119 1914 CodeSigning16

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.“

021119 1914 CodeSigning17

Pflegen Sie den Antragssteller gemäß Ihren internen Vorgaben.

Werbung
021119 1914 CodeSigning18

Klicken Sie nun auf „Registrieren“

021119 1914 CodeSigning19

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

021119 1914 CodeSigning20

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

021119 1914 CodeSigning21

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

021119 1914 CodeSigning22

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

021119 1914 CodeSigning23

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.

021119 1914 CodeSigning24

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.

021119 1914 CodeSigning25

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.

021119 1914 CodeSigning26

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

Get-AuthenticodeSignature -FilePath .\invoke-GPupdateDomain_sign.ps1 -Verbose | fl
021119 1914 CodeSigning27

Troubleshooting

New articles in english

RSS-Fehler: https://www.infrastructureheroes.org/feed is invalid XML, likely due to invalid characters. XML error: Invalid document end at line 2504, column 84
Werbung

Themen

Active Directory Administrative Vorlagen Anleitung AppV5 Autopilot Azure Azure AD ConfigMgr Deployment GPO Gruppenrichtlinien Guide How-To Linux Microsoft Microsoft Intune Office Office365 PowerShell Public Preview SCCM2012R2 SCSM2012R2 ServiceMgr Sicherheit TechNet Windows Windows 10 Windows10 Windows Server 2012 Windows Server 2012R2

Hinweise zum Affiliate-Marketing

Auf diesen Seiten werden auch Affiliate Marketing Links angezeigt. Diese sind meistens an dem kleinen „€“ oder einem „*“ dahinter zu erkennen. Der Betreiber dieser Seite erhält beim Kauf über diesen Link eine Provision, ohne das es den Verkaufspreis beeinflusst. Diese Einnahmen tragen zur Finanzierung der Seite bei.