GitHub Actions-Integrationshandbuch

Code-Signierung mit GitHub-Aktionen. Dazu erstellen wir einen Workflow in unserem gewünschten Repository in GitHub und führen die Code-Signierung mit dem Skript durch.

Voraussetzungen:

  1. Ein GitHub-Repository (Sie benötigen ein Administratorkonto)
  2. Signtool installiert und konfiguriert
  3. ECSigning KSP installiert und konfiguriert.

Installation & Konfiguration

Um Signtool und den ECSigning KSP zu installieren und zu konfigurieren, folgen Sie bitte den hier genannten Schritten.

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.

Um den Läufer einzurichten, führen Sie die folgenden Schritte aus:

  1. Navigieren Sie zu Ihrem GitHub-Repository

    Sie benötigen hierfür ein Administratorkonto.

    • 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“.
    Navigieren Sie zum Github-Repository
  2. 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 einige Befehle angezeigt, die Sie ausführen müssen.

    Führen Sie die Befehle aus, die in der Runner-Konfiguration angezeigt wurden. Die Befehle sind auch unten aufgeführt:

    mkdir Aktionen-Runner; cd Aktionen-Runner
                                                Invoke-WebRequest -Uri 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
  3. Sobald auf Ihrem Bildschirm „GitHub Actions“ angezeigt wird, werden Sie zur Läuferregistrierung aufgefordert.

    Läuferregistrierungsbildschirm
    • 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.)
      • Gespeicherte Einstellungen:

        • 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 ein MUSS, 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. Sie lautet „Service actions.runner“. .
        • 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

          Der Dienst actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree wurde 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

  4. Sobald der Runner auf Ihrem Gerät eingerichtet ist, navigieren Sie zu Ihrem Repository in GitHub.

    • Gehe zu Aktionen
    • Klicken Sie auf „Neuer Workflow“.
    • Klicken Sie auf Workflow selbst einrichten

      Richten Sie Ihren Workflow ein

      So sieht Ihr Editor aus. Sie können Ihre YAML-Datei umbenennen oder den Namen unverändert lassen.

      Umbenennen der YAML-Datei
    • 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 . Nachfolgend finden Sie eine kurze Beschreibung der erwarteten Variable:

      • : 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.
      • <Zertifikatspeicherort>: Ein Beispiel für einen möglichen Pfad in diesem Feld ist C:\testing.pem. Die Datei certificate.pem muss in dieser Eingabe enthalten sein. Sie können eine PEM-Datei des Zertifikats für die Codesignierung generieren, wenn Sie den Schlüsselnamen mit ECSigningKSP kennen. Gehen Sie dazu wie folgt vor:

        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.

        Rufen Sie in Ihrer Eingabeaufforderung dieses Verzeichnis auf. Verwenden Sie dann den folgenden Befehl, um die PEM-Zertifikatdatei abzurufen.

        ECGetCert.exe

        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:\Users\Administrator\Desktop\ForTesting\evcodesigning.pem" /tr http://timestamp.digicert.com /td SHA256 "C:\Users\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.

      Auftragsabschluss