GitHub Actions ist eine Plattform für kontinuierliche Integration und Entwicklung (CI/CD), die es Benutzern ermöglicht, ihre Build-, Test- und Deployment-Pipeline zu automatisieren. Benutzer können Workflows entwerfen, die jeden Pull- und Push-Request an ihr Repository erstellen und testen oder zusammengeführte Pull-Requests in die Produktion bringen. GitHub Actions ist ein leistungsstarkes Tool, mit dem Entwickler Workflows in ihren GitHub-Repositories automatisieren können.
Jeder Workflow besteht aus einem oder mehreren Jobs, die wiederum aus einem oder mehreren Schritten bestehen. Jeder Schritt besteht aus einer Reihe von Befehlen, die auf einem Runner ausgeführt werden. Dabei handelt es sich um eine virtuelle Maschine, auf der Ihre Workflows ausgeführt werden.
Erste Schritte mit GitHub Actions
Um mit GitHub Actions zu beginnen, benötigen Sie ein GitHub-Konto und ein Repository. Sobald Sie Ihr Repository erstellt haben, können Sie einen neuen Workflow erstellen, indem Sie eine YAML-Datei zum Verzeichnis .github/workflows in Ihrem Repository hinzufügen.
Nachfolgend sind einige der Begriffe aufgeführt, die im Workflow zur Definition der YAML-Datei verwendet werden. Um zu verstehen, wie dieser Workflow funktioniert, analysieren wir ihn genauer:
-
name: Dies ist der Name des Workflows. -
auf: Hiermit wird angegeben, wann der Workflow ausgelöst werden soll. Beispielsweise kann der Workflow ausgeführt werden, wenn ein Pull Request für einen Branch geöffnet wird. -
Arbeitsplätze: Dies ist eine Liste von Jobs, die als Teil des Workflows ausgeführt werden. -
Nachlauf: Hiermit legen Sie das Betriebssystem und die Umgebung für den Job fest. Wir können einen selbstgehosteten Runner für unseren Job einrichten. Wir richten hierfür einen selbstgehosteten Runner ein.
-
Schritte: Dies gibt eine Liste von Schritten an, die als Teil des Auftrags ausgeführt werden.
-
verwendet: Dies ist eine Abkürzung für die Verwendung einer vorhandenen Aktion aus dem GitHub Marketplace. In unserem Skript verwenden wir die Aktion „actions/checkout“, um den Repository-Code auszuchecken.
-
name: Dies ist der Name des Schritts. -
Lauf: Dies ist ein Shell-Befehl, der als Teil des Schritts ausgeführt wird.
Codesigning mit GitHub-Aktionen
Codesignatur ist der Prozess von digitales Signieren Softwarecode, um seine Authentizität und Integrität zu überprüfen. Diese Sicherheitsmaßnahme stellt sicher, dass der Code nicht manipuliert wurde und aus einer vertrauenswürdigen Quelle stammt.
Wir können Codesigning mithilfe von GitHub-Aktionen durchführen. Dazu erstellen wir einen Workflow in unserem gewünschten Repository in GitHub und führen das Codesigning mithilfe des Skripts durch.
Voraussetzungen für die Durchführung dieser Aufgabe sind:
- Ein GitHub-Repository (Sie benötigen ein Administratorkonto).
- Ein Runner, auf dem Signtool und ECSigning KSP installiert und konfiguriert sind.
Bevor wir beginnen, müssen wir einen Runner konfigurieren. Runner wird auf dem Gerät eingerichtet, auf dem Sie Signtool und ECSigning KSP installiert und konfiguriert haben. Führen Sie dazu die folgenden Schritte auf Ihrem Gerät aus.
Führen Sie zum Einrichten und Konfigurieren von Signtool die folgenden Schritte aus:
Signtool kann als Teil des Windows SDK heruntergeladen werden. Windows SDK herunterladen: (developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/)
Sie können auswählen, nur die Windows SDK-Signaturtools für Desktop-Apps zu installieren.
Öffnen Sie die Datei winsdksetup.exe. Merken Sie sich den im Installationspfad angezeigten Standardpfad, da dieser beim Ausführen dieser Befehle über die Eingabeaufforderung hilfreich ist.

Auf der Datenschutzseite von Windows Kits können Sie Microsoft mit beiden Optionen das Sammeln von Erkenntnissen gestatten. Klicken Sie auf „Weiter“.

Akzeptieren Sie die Lizenzvereinbarung

Deaktivieren Sie alle Funktionen außer Windows SDK-Signaturtools für Desktop-Apps, Wählen Sie dann „Installieren“.

Wenn Sie gefragt werden, ob Sie dieser App Änderungen erlauben möchten, wählen Sie „Ja“.


Klicken Sie auf die Windows-Suchleiste in der Taskleiste, geben Sie „Systemumgebungsvariablen bearbeiten“ ein und wählen Sie die gleichnamige Option in der Systemsteuerung aus.

Klicken Sie auf Umgebungsvariablen.

Bevor Sie die Variablenliste bearbeiten, navigieren Sie mit dem Datei-Explorer zum Installationsort des Windows SDK. Sie müssen den Pfad des Ordners kopieren, der die Signtool-Anwendung enthält. Der Standardpfad lautet C:\Programme (x86)\Windows Kits\10\bin\10.0.22621.0\x64, Siehe Screenshot unten. Klicken Sie mit der rechten Maustaste und kopieren Sie den Pfad wie gezeigt. Sie sehen außerdem die Anwendung „Signtool“ unten in der Dateiliste. Dies ist der Befehl, den Sie ausführen werden.

Klicken Sie in der Liste der Systemvariablen auf Neu. Geben Sie dann Pfad als Variablennamen ein und kopieren Sie den oben genannten Pfad. Klicken Sie dann auf OK auf die Umwelt Variablen Fenster und fragst immobilien Fenster.

Um die Installation zu testen, öffnen Sie die Eingabeaufforderung und geben Sie „signtool“ ein. Die Ausgabe sollte wie unten gezeigt aussehen.

Der Standardinstallationsort für Signtool ist beispielsweise: C:\Programme (x86)\Windows Kits\10\bin\10.0.22621.0\x64
Um KSP einzurichten, führen Sie die folgenden Schritte aus:
Encryption Consulting bietet Ihnen diese Lösung, CodeSignSecureDiese Lösung bietet Ihnen eine manipulationssichere Speicherung der Schlüssel sowie vollständige Transparenz und Kontrolle der Code Signing-Aktivitäten. Die privaten Schlüssel des Code Signing-Zertifikats können in einem HSM gespeichert werden, um die Risiken im Zusammenhang mit gestohlenen, beschädigten oder missbrauchten Schlüsseln auszuschließen.
Wenn Sie unsere Lösung verwenden, können Sie das KSP mit den folgenden Schritten herunterladen:
- Anmelden bei Code Sign Secure.
-
Navigieren Sie zu: Repository für Signaturtools.

- Download „Verschlüsselungsberatung CNG-SigningKSP“
-
Installieren Sie die Client-Tools mit dem MSI-Installationsprogramm. Das MSI-Installationsprogramm automatisiert einen Großteil der Konfiguration. Navigieren Sie zum Speicherort der heruntergeladenen Datei und starten Sie das Installationsprogramm.

-
Klicken Sie auf „Weiter“, wenn der Installationsassistent angezeigt wird.

-
Weiter klicken.

- Im Benutzername Geben Sie im Feld „admin“ ein.
-
Im Code Feld, kopieren Sie den Code aus dem Postman-API-Repository. Klicken Sie auf GetLoginToken API und kopieren Sie den Code aus der Körper
Laden Sie PostMan von diesem herunter Link. Klicken Sie nach dem Download unten im Fenster auf die Schaltfläche „Überspringen“. Fügen Sie im Dashboard mithilfe des Pluszeichens neben „Sammlungen“ eine neue Sammlung hinzu.
GetLoginToken API (http://codesignsecureapi.encryptionconsulting.com/api/auth/GetLoginToken): Dies ist die wichtigste API, da sie Ihnen eine Inhaber-Token Zur Verwendung mit den restlichen APIs. Was im Body enthalten sein sollte, wird unten angezeigt. Der Code dient als Passwort, um das Bearer-Token zu erhalten, das Benutzerfeld ist der Benutzername und das Feld Identitätstyp gibt den Benutzertyp an. Klicken Sie auf Senden um eine Ausgabe zu generieren, in der das Bearer-Token unten aufgeführt ist. Kopieren Sie dieses Token zur Verwendung.

- Ändern Sie die Identitätsschutz Typ um 1.
- Verlassen API BaseURL das Gleiche.
-
Weiter klicken.

-
Weiter klicken.

-
Sie werden dann benachrichtigt, dass dieses Programm Änderungen an Ihrem PC vornimmt. Klicken Sie auf „Ja“.

-
Die Installation ist nun abgeschlossen.

Um den Läufer einzurichten, führen Sie die folgenden Schritte aus:
Navigieren Sie zu Ihrem Github-Repository.
- Navigieren Sie zu den Einstellungen des Repositorys
- Scrollen Sie nach unten zu „Aktionen“ und wählen Sie „Runner“ aus dem Dropdown-Menü aus.
Klicken Sie auf „Neuer selbstgehosteter Runner“.

Anschließend können Sie auf das Runner-Image (macOS/Linux/Windows) Ihrer Wahl klicken. Die folgenden Anweisungen gelten für Windows. Auf dem Bildschirm werden Ihnen mehrere Befehle angezeigt, die Sie befolgen müssen.
Führen Sie die Befehle aus, die in der Konfiguration des Runners angezeigt werden. Die Befehle sind auch unten aufgeführt:
- mkdir Aktionen-Runner; cd Aktionen-Runner;
- Invoke-WebRequest -Url https://github.com/actions/runner/releases/download/v2.303.0/actions-runner-win-x64-2.303.0.zip -OutFile actions-runner-win-x64-2.303.0.zip
- Add-Type -AssemblyName System.IO.Compression.FileSystem; [System.IO.Compression.ZipFile]::ExtractToDirectory(“$PWD/actions-runner-win-x64-2.303.0.zip”, “$PWD”)
- ./config.cmd –url https://github.com/Encryption-Consulting-LLC/CodeSignSecure-Desktop –token
Sobald auf Ihrem Bildschirm „Github Actions“ angezeigt wird, werden Sie zur Läuferregistrierung aufgefordert.

- Geben Sie den Namen der Läufergruppe ein, zu der dieser Läufer hinzugefügt werden soll: [Drücken Sie die Eingabetaste für Standard] (Sie können dies auf Standard belassen).
- Geben Sie den Namen des Läufers ein: [Drücken Sie die Eingabetaste für CLIENT] (Sie können den gewünschten Namen für Ihren Läufer eingeben).
-
Dieser Runner hat die folgenden Bezeichnungen: „selbstgehostet“, „Windows“, „X64“
Geben Sie zusätzliche Bezeichnungen ein (z. B. Bezeichnung 1, Bezeichnung 2): [Drücken Sie die Eingabetaste, um zu überspringen] (Bitte geben Sie hier eine Bezeichnung ein. Es kann alles Mögliche sein. Überspringen Sie diesen Schritt nicht. Derselbe Name wird später verwendet, um den Runner im Skript aufzurufen.)
-
Sobald der Vorgang abgeschlossen ist, wird Folgendes auf Ihrem Bildschirm angezeigt
- Läufer erfolgreich hinzugefügt
- Läuferverbindung ist gut
- Läufereinstellungen
Geben Sie den Namen des Arbeitsordners ein: [Drücken Sie die Eingabetaste für _work] (Sie können dies auf der Standardeinstellung belassen oder einen Ordner Ihrer Wahl angeben.)
Einstellungen gespeichert
- Möchten Sie den Runner als Dienst ausführen? (J/N) [Drücken Sie die Eingabetaste für N] (Geben Sie J ein)
-
Für den Dienst zu verwendendes Benutzerkonto [drücken Sie die Eingabetaste für NT AUTHORITY\NETWORK SERVICE] (Stellen Sie sicher, dass Sie hier Administrator eingeben)
(Zum Ausführen des Befehls sind Administratorrechte erforderlich. Daher ist es UNBEDINGT erforderlich, den Benutzer als Administrator festzulegen.)
- Passwort für das Konto CLIENT\Administrator (Geben Sie das Passwort Ihres Administratorkontos an)
-
Sobald dies erledigt ist, wird die folgende Eingabeaufforderung auf Ihrem Bildschirm angezeigt.
Es wird als Service actions.runner angezeigt. .
Erteilen von Dateiberechtigungen an „CLIENT\Administrator“.
Dienst actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree erfolgreich installiert
Service actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree hat die Wiederherstellungsoption erfolgreich festgelegt
Dienst actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree erfolgreich auf verzögerten Autostart eingestellt
Dienst actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree erfolgreich konfiguriert
Warten auf den Beginn des Gottesdienstes …
Dienst actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree erfolgreich gestartet
Sobald der Runner auf Ihrem Gerät eingerichtet ist, navigieren Sie zu Ihrem Repository in GitHub.
Gehen Sie zu Aktionen.
Klicken Sie auf „Neuer Workflow“.
Klicken Sie auf „Workflow selbst einrichten“

So sieht Ihr Editor aus. Sie können Ihre YAML-Datei umbenennen oder den Standardnamen beibehalten.

Fügen Sie das folgende Skript zu Ihrem Editor hinzu, nachdem Sie einige Änderungen vorgenommen oder die Variablen aktualisiert haben.
Name: Code Signing auf: Push: Zweige: <[Ihr Zweigname]> Jobs: Build: Läuft auf: Schritte: - Name: Verwendeter Checkout-Code: actions/checkout@v2 - Name: Ausführung des Signiercodes: | signtool sign /csp "Encryption Consulting Key Storage provider" /kc /fd /F " " /tr /td SHA256 " "
Bitte ersetzen Sie die angegebenen Variablen unter . Eine kurze Beschreibung der erwarteten Variable finden Sie weiter unten.
: Hier geben Sie den Pfad der Datei an, die Sie signieren möchten. Beispiel: C:\ \ . Stellen Sie sicher, dass Sie einen Dateinamen mit der richtigen Erweiterung angegeben haben.
Dies bezieht sich auf den kryptografischen Schlüssel, der zum Signieren des Codes verwendet wird. Beispiel: evcodesigning
: Ein Beispiel für den Inhalt dieses Feldes ist C:\testing.pem. Das Zertifikat.pem Die Datei MUSS in dieser Eingabe enthalten sein. Sie können eine PEM-Datei des Zertifikats für die gemeinsame Gestaltung generieren, wenn Sie den Schlüsselnamen ECSigningKSP verwenden. Führen Sie dazu die folgenden Befehle aus:
Navigieren Sie auf Ihrem Gerät, auf dem ECSigningKSP installiert und konfiguriert ist, zum Ordner ECSigningKSP, der sich normalerweise unter „C:\Programme\Encryption Consulting\SigningKSP“ befindet.
Greifen Sie in Ihrer Eingabeaufforderung auf dieses Verzeichnis zu.
Verwenden Sie dann den folgenden Befehl, um die PEM-Datei des Zertifikats abzurufen.
ECGetCert.exe (Beispiel: ECGetCert.exe evcodesigning)
Geben Sie den Speicherort des Zertifikats an.
: Sie müssen den Namen des Hash-Algorithmus angeben, z. B. SHA256, SHA384 oder SHA512. Es muss einer dieser drei Werte sein.
: Ein Zeitstempelserver liefert den Nachweis, dass eine digitale Signatur zu einem bestimmten Zeitpunkt durchgeführt wurde, wodurch später überprüft werden kann, ob eine Datei zu einem bestimmten Zeitpunkt signiert wurde. Wir verwenden im Allgemeinen http://timestamp.digicert.com
Der Befehl, den ich zum Signieren verwendet habe, war
signtool sign /csp "Anbieter von Schlüsselspeicherung für Verschlüsselungsberatung" /kc evcodesigning /fd SHA256 /f "C:\Benutzer\Administrator\Desktop\ForTesting\evcodesigning.pem" /tr http://timestamp.digicert.com /td SHA256 "C:\Benutzer\Administrator\Desktop\ForTesting\AgentService.exe"
Das von mir verwendete Skript war:
Name: Code Signing auf: Push: Zweige: [Github_Actions] Jobs: Build: Läuft auf: Runner-Schritte: - Name: Verwendeter Checkout-Code: actions/checkout@v2 - Name: Code signieren, ausführen: | signtool sign /csp „Encryption Consulting Key Storage Provider“ /kc evcodesigning /fd SHA256 /f „C:\Benutzer\Administrator\Desktop\ForTesting\evcodesigning.pem“ /tr http://timestamp.digicert.com /td SHA256 „C:\Benutzer\Administrator\Desktop\ForTesting\AgentService.exe“
Nachdem Sie Ihr Skript bearbeitet haben, klicken Sie auf „Commit“. Sie können direkt in Ihren Standard-Branch oder in einen neuen Branch committen. Achten Sie darauf, den Namen Ihres Branchs im Code zu aktualisieren. Nach dem Commit wird der Job ausgeführt.

Fazit
Encryption Consulting bietet Ihnen eine Codesigning-Lösung namens CodeSign Secure. Sie können uns kontaktieren, um das SigningKSP sowie den Schlüsselnamen zu erhalten. Codesigning mit Github Actions ist ein einfacher Prozess. Ein Benutzer muss lediglich den Runner konfigurieren und Ihr Skript ausführen. Sie erreichen uns unter [E-Mail geschützt] für jede Hilfe.
