Zum Inhalt

47-Tage-Zertifikate sind in Planung. Bist du bereit?

Jetzt handeln →

Wie integriere ich eine GitHub Actions CI/CD-Pipeline mit CodeSigning?

Entwicklungsplattform (CI/CD)

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:

  1. Ein GitHub-Repository (Sie benötigen ein Administratorkonto).
  2. 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.

Enterprise Code-Signing-Lösung

Holen Sie sich mit unserer Code-Signing-Lösung eine Lösung für alle Ihre kryptografischen Software-Code-Signing-Anforderungen.

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.

Windows SDK-Startseite

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

Windows SDK-Datenschutz

Akzeptieren Sie die Lizenzvereinbarung

Windows SDK-Lizenzvereinbarung

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

Windows SDK-Funktion

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

Windows-Benutzerkontensteuerung
Windows SDK final

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.

Systemumgebungsvariable bearbeiten

Klicken Sie auf Umgebungsvariablen.

Umgebungsvariablen modal

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.

Signtool-Installationspfad

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.

neue Systemvariable hinzufügen

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

Signtool-Eingabeaufforderung

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.

    Codesign-Seite mit Tools für sichere Signaturen
  • 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.

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

    EC-Signatur KSP-Setup-Startseite
  • Weiter klicken.

    EC-Signatur KSP-Setup-Ordnerinstallation
  • 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.

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

    EC-Signatur KSP-Setup Benutzerauthentifizierungsinformationen
  • Weiter klicken.

    ec Signierung ksp Setup Installation bestätigen
  • Sie werden dann benachrichtigt, dass dieses Programm Änderungen an Ihrem PC vornimmt. Klicken Sie auf „Ja“.

    msi setup Benutzerkontensteuerung
  • Die Installation ist nun abgeschlossen.

    EC-Signatur KSP-Setup-Installation 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“.

    Github-Einstellungen Runners

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:

Sobald auf Ihrem Bildschirm „Github Actions“ angezeigt wird, werden Sie zur Läuferregistrierung aufgefordert.

Powershell-Github-Aktionen
  • 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

Enterprise Code-Signing-Lösung

Holen Sie sich mit unserer Code-Signing-Lösung eine Lösung für alle Ihre kryptografischen Software-Code-Signing-Anforderungen.

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“

GitHub-Workflows

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

GitHub-Editor

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.

GitHub-Commit

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.