GitHub Actions Integratiehandleiding

Codeondertekening met behulp van GitHub-acties. Hiervoor maken we een workflow in onze gewenste repository in GitHub en voeren we codeondertekening uit met behulp van het script.

Voorwaarden

  1. Een GitHub-repository (hiervoor heb je een beheerdersaccount nodig)
  2. Signtool geïnstalleerd en geconfigureerd
  3. ECSigning KSP geïnstalleerd en geconfigureerd.

Installatie en configuratie

Volg de stappen die hier worden beschreven om Signtool en de ECSigning KSP te installeren en configureren.

Voordat we beginnen, moeten we een runner configureren. Deze wordt ingesteld op het apparaat waarop Signtool en ECSigning KSP zijn geïnstalleerd en geconfigureerd.

Om de loper op te zetten, volgt u onderstaande stappen:

  1. Navigeer naar je GitHub-repository

    Hiervoor hebt u een beheerdersaccount nodig.

    • Ga naar de instellingen van de repository.
    • Scroll naar beneden naar Acties en selecteer Renner in het dropdownmenu.
    • Klik op Nieuwe zelf-gehoste hardloper.
    Navigeer naar Github Repository
  2. Daarna kunt u op de afbeelding van de runner (macOS/Linux/Windows) van uw keuze klikken. De onderstaande instructies zijn voor Windows. U ziet een aantal opdrachten op het scherm.

    Voer de opdrachten uit die in de runner-configuratie worden weergegeven. De opdrachten staan ​​ook hieronder:

    mkdir acties-runner; cd acties-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 Systeem.IO.Compressie.Bestandssysteem; [Systeem.IO.Compressie.ZipBestand]::ExtractToDirectory("$PWD/actions-runner-win-x64-2.303.0.zip", "$PWD")
                                            
    ./config.cmd --url https://github.com/Encryption-Consulting-LLC/CodeSignSecure-Desktop --token
  3. Zodra u GitHub Actions op uw scherm ziet staan, wordt u gevraagd om u als deelnemer te registreren.

    Scherm voor registratie van lopers
    • Voer de naam in van de groep hardlopers waaraan u deze hardloper wilt toevoegen: [druk op Enter voor Standaard] (U kunt deze optie op de standaardinstelling laten staan).
    • Voer de naam van de loper in: [druk op Enter voor CLIENT] (U kunt de gewenste naam voor uw loper invoeren).
    • Deze runner heeft de volgende labels: 'zelf gehost', 'Windows', 'X64'

      Voer eventuele extra labels in (bijv. label-1,label-2): [druk op Enter om over te slaan] (Voer hier een label in, het kan van alles zijn, sla deze stap niet over. Dezelfde naam wordt later gebruikt om de runner in het script aan te roepen).

    • Het volgende wordt op uw scherm weergegeven zodra het klaar is

      • Loper succesvol toegevoegd
      • De verbinding met de hardloper is goed
      • Instellingen voor hardlopers: Voer de naam van de werkmap in: [druk op Enter voor _werk] (U kunt dit op de standaardinstelling laten staan, of u kunt een map naar keuze opgeven)
      • Instellingen opgeslagen:

        • Wil je de loper als service laten lopen? (J/N) [druk op Enter voor N] (Voer J in)
        • Gebruikersaccount dat voor de service moet worden gebruikt [druk op Enter voor NT AUTHORITY\NETWORK SERVICE] (Zorg ervoor dat u hier Administrator invoert)

          Om de opdracht uit te voeren, zijn beheerdersrechten vereist. Het is daarom een ​​MUST om de gebruiker als beheerder in te stellen.
        • Wachtwoord voor het account CLIENT\Administrator (geef het wachtwoord van uw beheerdersaccount op)
        • Zodra u klaar bent, ziet u de volgende prompt op uw scherm: Service actions.runner. .
        • Bestandsrechten verlenen aan 'CLIENT\Administrator'.

          Service actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree succesvol geïnstalleerd

          Service actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree heeft de hersteloptie succesvol ingesteld

          Service actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree is succesvol ingesteld op vertraagd automatisch starten

          Service actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree succesvol geconfigureerd

          Wachten tot de service start…

          Service actions.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree is succesvol gestart

  4. Zodra de runner op uw apparaat is ingesteld, navigeert u naar uw repository in GitHub.

    • Ga naar Acties
    • Klik op Nieuwe workflow
    • Klik op Stel zelf een workflow in

      Stel uw workflow in

      Zo ziet je editor eruit. Je kunt je .yaml-bestand hernoemen of de naam ongewijzigd laten.

      YAML-bestand hernoemen
    • Voeg het onderstaande script toe aan uw editor nadat u enkele wijzigingen hebt aangebracht of de variabelen hebt bijgewerkt.

                                                  naam: Code Signing op: push: branches: <[ Uw Branch Naam ]> jobs: build: runs-on: stappen: - naam: Checkout-code gebruikt: actions/checkout@v2 - naam: Ondertekeningscode uitgevoerd: | signtool sign /csp "Encryption Consulting Key Storage provider" /kc /fd /F " " /tr /td SHA256 " "
      
                                              

      Vervang de variabelen die onder zijn gespecificeerd Hieronder volgt een korte beschrijving van de verwachte variabele:

      • : Hier geeft u het pad op van het bestand dat u wilt ondertekenen. Bijvoorbeeld C:\ \ Zorg ervoor dat u een bestandsnaam met de juiste extensie hebt opgegeven.
      • : Dit verwijst naar de cryptografische sleutel die gebruikt wordt om de code te ondertekenen. Voorbeeld: evcodesigning.
      • <certificaatlocatie>: Een voorbeeld van wat u in dit veld kunt invoeren is C:\testing.pem. Het bestand certificate.pem MOET in dit invoerveld worden opgenomen. U kunt een pem-bestand van het certificaat voor ondertekening genereren als u de sleutelnaam hebt met behulp van ECSigningKSP. Volg hiervoor de onderstaande opdrachten:

        Navigeer op het apparaat waarop u ECSigningKSP hebt geïnstalleerd en geconfigureerd naar de map van ECSigningKSP, die zich meestal bevindt in "C:\Program Files\Encryption Consulting\SigningKSP".

        Ga via de opdrachtprompt naar deze map. Gebruik vervolgens de volgende opdracht om het PEM-certificaatbestand op te halen.

        ECGetCert.exe

        voorbeeld: ECGetCert.exe evcodesigning

        Geef de locatie op waar het certificaat is opgeslagen.

      • <hashalgoritme>: U moet de naam van het hashalgoritme opgeven, zoals SHA256, SHA384 of SHA512. Het moet een van deze drie waarden zijn.

      • <tijdstempelserver>: Een tijdstempelserver levert het bewijs dat een digitale handtekening op een specifiek tijdstip is gezet, waardoor in de toekomst kan worden geverifieerd dat een bestand op een bepaald tijdstip is ondertekend. De server die wij doorgaans gebruiken is http://timestamp.digicert.com

      Het commando dat ik gebruikte om te ondertekenen was

                                                  signtool sign /csp "Encryptie Consulting Sleutelopslagprovider" /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"
                                              

      Het script dat ik gebruikte was:

                                                  Naam: Code Signing op: push: branches: [ Github_Actions ] jobs: build: runs-on: runner stappen: - naam: Checkout code gebruikt: actions/checkout@v2 - naam: Sign code run: | 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"
                                              
    • Zodra je je script hebt bewerkt, klik je op 'commit'. Je kunt direct committen naar je standaardbranch of naar een nieuwe branch. Zorg ervoor dat je de naam van je branch in de code bijwerkt. Na het committen wordt de taak uitgevoerd.

      Voltooiing van de taak