Zum Inhalt

47-Tage-Zertifikate sind im Anmarsch. Sind Sie 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.

  • run-on: Hiermit werden das Betriebssystem und die Umgebung für den Job festgelegt. Wir können einen selbstgehosteten Runner für unseren Job einrichten. Wir richten gerade einen solchen Runner ein.

  • Schritte: Hier wird eine Liste der Schritte angegeben, die im Rahmen des Auftrags ausgeführt werden.

  • Verwendung: Dies ist eine Abkürzung zur Nutzung einer bestehenden 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.

  • run: Dies ist ein Shell-Befehl, der im Rahmen dieses Schritts ausgeführt wird.

Codesigning mit GitHub-Aktionen

Die Codesignierung ist der Prozess der digitalen Signatur von Softwarecode, um dessen Authentizität und Integrität zu überprüfen. Sie ist eine Sicherheitsmaßnahme, die dazu beiträgt, sicherzustellen, 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 Signing Tools for Desktop Apps“ und 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 im Datei-Explorer zum Installationsverzeichnis des Windows SDK. Kopieren Sie den Pfad des Ordners, der die Anwendung „signtool“ enthält. Der Standardpfad lautet C:\Program Files (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 abgebildet. Die Anwendung „signtool“ finden Sie auch am Ende der Dateiliste. Dies ist der Befehl, den Sie ausführen müssen.

Signtool-Installationspfad

Klicken Sie in der Liste „Systemvariablen“ auf „Neu“. Geben Sie dann „Path“ als Variablennamen ein und kopieren Sie den zuvor genannten Pfad. Klicken Sie anschließend im Fenster „Umgebungsvariablen und im Fenster „Systemeigenschaften “ auf „OK“.

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:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64

Um KSP einzurichten, führen Sie die folgenden Schritte aus:

Encryption Consulting bietet Ihnen mit CodeSignSecure eine Lösung, die Ihnen manipulationssichere Speicherung Ihrer Schlüssel sowie vollständige Transparenz und Kontrolle über Ihre Codesignierungsaktivitäten ermöglicht. Die privaten Schlüssel des Codesignierungszertifikats können in einem HSM gespeichert werden, um die Risiken gestohlener, beschädigter oder missbrauchter Schlüssel zu eliminieren.

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.
  • Kopieren Sie im Feld „Code“ den Code aus dem Postman API-Repository . Klicken Sie auf die GetLoginToken- API und kopieren Sie den Code aus dem Body.

    Laden Sie PostMan über diesen Link herunter . Klicken Sie nach dem Download unten im Fenster auf „Überspringen“. Fügen Sie anschließend im Dashboard eine neue Sammlung hinzu, indem Sie auf das Pluszeichen neben „Sammlungen“ klicken.

    GetLoginToken-API (http://codesignsecureapi.encryptionconsulting.com/api/auth/GetLoginToken): Dies ist die wichtigste API, da sie Ihnen ein Bearer-Token für die Verwendung mit den übrigen APIs liefert. Der Inhalt des Anfragetextes ist unten aufgeführt. Der Code dient als Passwort für den Abruf des Bearer-Tokens. Das Feld „user“ enthält den Benutzernamen und das Feld „identity type“ den Benutzertyp. Klicken Sie auf „Senden“ , um eine Ausgabe zu generieren, die das Bearer-Token am Ende enthält. 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 unter <Variablenname> angegebenen Variablen . Eine kurze Beschreibung der erwarteten Variablen finden Sie unten.

<Dateipfad> : Hier geben Sie den Pfad der zu signierenden Datei an. Beispiel: C:\<Ordnername>\<Dateiname>. Achten Sie darauf, dass der Dateiname die korrekte Dateiendung hat.

<Schlüsselname> Dies bezieht sich auf den kryptografischen Schlüssel, der zum Signieren des Codes verwendet wird. Beispiel: evcodesigning

<Zertifikatspeicherort> : Ein Beispiel für einen möglichen Pfad in diesem Feld ist C:\testing.pem. Die Zertifikatsdatei (.pem) muss in dieser Eingabe enthalten sein. Sie können eine PEM-Datei des Zertifikats für die Codesignierung erstellen, sofern Sie den Schlüsselnamen kennen. Verwenden Sie dazu ECSigningKSP. Befolgen Sie dazu die unten stehenden Befehle:

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 <Schlüsselname> (Beispiel: ECGetCert.exe evcodesigning)

Geben Sie den Speicherort des Zertifikats an.

<Hashing-Algorithmus> : Sie müssen den Namen des Hashing-Algorithmus angeben, z. B. SHA256, SHA384 oder SHA512. Es muss einer dieser drei Werte sein.

<Zeitstempelserver>: Ein Zeitstempelserver liefert den Nachweis, dass eine digitale Signatur zu einem bestimmten Zeitpunkt erstellt wurde . Dadurch lässt sich später überprüfen, ob eine Datei zu einem bestimmten Zeitpunkt signiert wurde. Wir verwenden üblicherweise 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 die Codesignierungslösung CodeSign Secure an . Kontaktieren Sie uns, um den SigningKSP und den zugehörigen Schlüsselnamen zu erhalten. Die Codesignierung mit GitHub Actions ist unkompliziert. Sie müssen lediglich den Runner konfigurieren und Ihr Skript ausführen. Bei Fragen erreichen Sie uns unter [email protected] .